Junior — Middle
Quali sono le differenze nella copia dei dati per tipi di valore e tipi di riferimento?
sobes.tech AI
Risposta dell'AI
Tipi di valore (value types) e tipi di riferimento (reference types) differiscono nel modo in cui avviene la copia dei dati:
- Tipi di valore: durante la copia, viene creata una copia completa e indipendente dei dati. Le modifiche alla copia non influenzano l'originale.
- Tipi di riferimento: durante la copia, viene coperta la referenza allo stesso oggetto in memoria. Le modifiche tramite una referenza si riflettono in tutte.
Ad esempio, su iOS, le strutture (struct) sono tipi di valore, e le classi (class) sono tipi di riferimento.
Esempio in 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 — copie indipendenti
class Person {
var name: String
init(name: String) { self.name = name }
}
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — entrambe le referenze allo stesso oggetto