Sobes.tech
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ări enum, 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.