Junior — Middle
Care este diferența dintre tipurile de date prin referință și cele prin valoare în limbajul Swift?
sobes.tech AI
Răspuns de la AI
În Swift, tipurile de date sunt împărțite în tipuri de valoare (value types) și tipuri de referință (reference types).
-
Tipuri de valoare (de exemplu, structuri
struct, enumerărienum, tupluri) sunt copiate la atribuire sau transmitere către o funcție. Aceasta înseamnă că fiecare variabilă are propria copie independentă a datelor. -
Tipuri de referință (clase
class) transmit o referință către același obiect în memorie la atribuire sau transmitere. Modificările printr-o referință vor fi vizibile și prin celelalte.
Exemplu:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0, deoarece p2 este o copie a lui p1
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, deoarece ambele referințe indică același obiect
Prin urmare, diferența este că tipurile de valoare sunt copiate, iar tipurile de referință transmit o referință către același obiect.