Junior
Čo presne uchováva premenná, keď vytvárame objekt typu value?
sobes.tech AI
Odpoveď od AI
Keď vytvoríme objekt typu hodnoty (štruktúra, enum, n-tica v Swift), premennej uloží kópiu údajov tohto objektu priamo do pamäte. Priradenie alebo odovzdanie takého objektu ako parametra spôsobí kopírovanie jeho obsahu.
Príklady:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2) // Premenná p1 uloží kópiu údajov (x=1, y=2)
var p2 = p1 // p2 dostane kópiu údajov p1. Sú to nezávislé kópie.
p1.x = 10 // Mení sa iba p1.x
print(p2.x) // Vypíše 1, pretože p2 sa nezmenilo
Porovnanie s referenčným typom (trieda):
| Charakteristika | Typ hodnoty (štruktúra, enum) | Referenčný typ (trieda) |
|---|---|---|
| Čo je uložené v premennej | Kópia údajov objektu | Odkaz na objekt v pamäti |
| Priradenie / Odovzdanie | Kópia údajov | Kópia odkazu (ukazuje na ten istý objekt) |
| Zmena | Ovplyvňuje iba aktuálnu kópiu | Ovplyvňuje objekt, na ktorý odkaz ukazuje (môže ovplyvniť aj iné premenne odkazujúce na ten istý objekt) |