Sobes.tech
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)