Junior — Middle
Care sunt diferențele la copierea datelor pentru tipurile de valoare și tipurile de referință?
sobes.tech AI
Răspuns de la AI
Tipurile de valoare (value types) și tipurile de referință (reference types) diferă în modul în care se face copierea datelor:
- Tipuri de valoare: la copiere, se creează o copie completă și independentă a datelor. Modificările în copie nu afectează originalul.
- Tipuri de referință: la copiere, se copiază referința la același obiect din memorie. Modificările printr-o referință se reflectă în toate.
De exemplu, în iOS, structurile (struct) sunt tipuri de valoare, iar clasele (class) sunt tipuri de referință.
Exemplu în Swift:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
// p1.x == 0, p2.x == 10 — copii independente
class Person {
var name: String
init(name: String) { self.name = name }
}
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — ambele referințe la același obiect