Sobes.tech
Junior

Mida täpselt salvestab muutja, kui me loome value tüüpi objekti?

sobes.tech AI

Vastus AI-lt

Kui loome väärtusetüüpi objekti (struktuur, enum, tuple Swiftis), salvestab muutuja otse selle objekti andmete koopia mälus. Sellise objekti määramine või edastamine parameetrina põhjustab selle sisu koopia.

Näited:

struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2) // Muutuja p1 salvestab andmete koopia (x=1, y=2)
var p2 = p1              // p2 saab p1 andmete koopia. Need on sõltumatud koopiad.

p1.x = 10                // Muutub ainult p1.x
print(p2.x)              // Kuvab 1, kuna p2 ei muutunud

Võrdlus viidetüübi (klass) kanssa:

Omadus Väärtusetüüp (struktuur, enum) Viidetüüp (klass)
Mida salvestatakse muutujasse Objekti andmete koopia Viide objekti mälus
Määramine / Edastamine Andmete koopia Viite koopia (osutab sama objekti)
Muutmine Mõjutab ainult praegust koopiat Mõjutab objekti, millele viitab viide (võib mõjutada ka teisi muutujaid, mis viitavad sama objekti)