Junior — Middle
Care sunt diferențele dintre tipurile de valori și tipurile de referință în programare?
sobes.tech AI
Răspuns de la AI
Tipurile de valori (value types) și tipurile de referință (reference types) diferă în modul în care stochează și transmit datele.
-
Tipurile de valori sunt stocate direct în memoria variabilei. La atribuire sau transmitere, se copiază valoarea în sine. Modificările asupra copiei nu afectează originalul. În Swift, tipurile de valori includ structuri (struct), enumerări (enum) și tuple.
-
Tipurile de referință sunt stocate în heap, iar variabila conține o referință la obiect. La atribuire, se copiază doar referința, nu obiectul. Modificările printr-o referință se reflectă în toate referințele. În Swift, acestea sunt clase (class).
Exemplu:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x) // 1 — copia nu s-a schimbat
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — ambele variabile fac referire la același obiect