Junior
Co přesně uchovává proměnná, když vytváříme objekt typu value?
sobes.tech AI
Odpověď od AI
Když vytvoříme objekt typu hodnoty (struktura, výčet, n-tice ve Swiftu), proměnná přímo v paměti uchovává kopii dat tohoto objektu. Při přiřazení nebo předání takového objektu jako parametru dojde k kopii jeho obsahu.
Příklady:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2) // Proměnná p1 uchovává kopii dat (x=1, y=2)
var p2 = p1 // p2 dostává kopii dat p1. Jsou to nezávislé kopie.
p1.x = 10 // Mění se pouze p1.x
print(p2.x) // Vypíše 1, protože p2 se nezměnilo
Porovnání s referenčním typem (třída):
| Charakteristika | Typ hodnoty (struktura, enum) | Referenční typ (třída) |
|---|---|---|
| Co je uloženo v proměnné | Kopie dat objektu | Odkaz na objekt v paměti |
| Přiřazení / Předání | Kopie dat | Kopie odkazu (ukazuje na stejný objekt) |
| Změna | Ovlivní pouze aktuální kopii | Ovlivní objekt, na který odkaz ukazuje (může ovlivnit i jiné proměnné odkazující na stejný objekt) |