Junior — Middle
Quali sono le differenze tra i tipi di dati in termini di semantica: valori e riferimenti?
sobes.tech AI
Risposta dell'AI
I tipi di dati secondo la semantica si dividono in tipi di valore (value types) e tipi di riferimento (reference types).
-
I tipi di valore memorizzano i dati direttamente. Quando vengono assegnati o passati a una funzione, viene copiata la stessa valore. In iOS (Swift), esempi sono
Int,Double,Bool, strutture (struct). -
I tipi di riferimento memorizzano un riferimento all'area di memoria dove si trovano i dati. Quando vengono assegnati, viene coperto il riferimento, non i dati. Le modifiche tramite un riferimento sono visibili attraverso altri. In Swift, sono classi (
class), oggetti.
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: "Иван")
var person2 = person1
person2.name = "Пётр"
print(person1.name) // "Пётр" — riferimento allo stesso oggetto
Capire la differenza è importante per la gestione della memoria e il comportamento degli oggetti nell'applicazione.