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) |