Junior — Middle
Jaké jsou rozdíly při kopírování dat pro hodnotové a referenční typy?
sobes.tech AI
Odpověď od AI
Typy hodnot (value types) a typy odkazů (reference types) se liší v tom, jak dochází ke kopírování dat:
- Typy hodnot: při kopírování se vytvoří úplná nezávislá kopie dat. Změny v kopii neovlivní originál.
- Typy odkazů: při kopírování se kopíruje odkaz na stejný objekt v paměti. Změny přes odkaz se odrážejí ve všech.
Například v iOS jsou struktury (struct) typy hodnot, třídy (class) jsou typy odkazů.
Příklad v 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 — nezávislé kopie
class Person {
var jméno: String
init(jméno: String) { self.jméno = jméno }
}
var osoba1 = Person(jméno: "Иван")
var osoba2 = osoba1
osoba2.jméno = "Пётр"
// osoba1.jméno == "Пётр" — obě reference na stejný objekt