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