Junior — Middle
Kokios yra skirtumai kopijuojant duomenis tarp reikšmės ir nuorodos tipų?
sobes.tech AI
Atsakymas iš AI
Vertės tipai (value types) ir nuorodos tipai (reference types) skiriasi tuo, kaip atliekamas duomenų kopijavimas:
- Vertės tipai: kopijavimo metu sukuriama visiškai nepriklausoma duomenų kopija. Pakeitimai kopijoje neveikia originalo.
- Nuorodos tipai: kopijavimo metu kopijuojama nuoroda į tą patį objektą atmintyje. Pakeitimai per vieną nuorodą atsispindi visuose.
Pavyzdžiui, iOS, struktūros (struct) yra vertės tipai, o klasės (class) – nuorodos tipai.
Swift pavyzdys:
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 — nepriklausomos kopijos
class Person {
var name: String
init(name: String) { self.name = name }
}
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — abi nuorodos į tą patį objektą