Junior — Middle
Quali sono le differenze tra tipi di valore e tipi di riferimento nella programmazione?
sobes.tech AI
Risposta dell'AI
I tipi di valore (value types) e i tipi di riferimento (reference types) differiscono nel modo in cui memorizzano e trasmettono i dati.
-
I tipi di valore vengono memorizzati direttamente nella memoria della variabile. Quando si assegna o si passa, viene copio il valore stesso. Le modifiche alla copia non influenzano l'originale. In Swift, i tipi di valore includono strutture (struct), enumerazioni (enum) e tuple.
-
I tipi di riferimento vengono memorizzati nell'heap, e la variabile contiene un riferimento all'oggetto. Quando si assegna, viene copiata solo la referenza, non l'oggetto. Le modifiche tramite una referenza si riflettono su tutte le referenze. In Swift, sono le classi (class).
Esempio:
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 — la copia non è cambiata
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — entrambe le variabili fanno riferimento allo stesso oggetto