Junior — Middle
Kādi ir atšķirības, kopējot datus vērtības un atsauces tipus?
sobes.tech AI
Atbilde no AI
Vērtību tipi (value types) un atsauces tipi (reference types) atšķiras pēc datu kopēšanas veida:
- Vērtību tipi: kopēšanas laikā tiek izveidota pilnīgi neatkarīga datu kopija. Izmaiņas kopijā neietekmē oriģinālu.
- Atsauces tipi: kopēšanas laikā tiek kopēta atsauce uz to pašu objektu atmiņā. Izmaiņas caur vienu atsauci tiek attēlotas visās.
Piemēram, iOS struktūras (struct) ir vērtību tipi, bet klases (class) ir atsauces tipi.
Swift piemērs:
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 — neatkarīgas kopijas
class Person {
var name: String
init(name: String) { self.name = name }
}
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — abas atsauces uz to pašu objektu