Sobes.tech
Junior

Ko tieši glabā mainīgais, kad mēs izveidojam value tipa objektu?

sobes.tech AI

Atbilde no AI

Kad mēs izveidojam vērtības tipu (struktūra, enum, tuple Swift), mainīgais tieši atmiņā glabā kopiju šī objekta datiem. Piešķirot vai pārsūtot šādu objektu kā parametru, tiek izdarīta tā satura kopija.

Piemēri:

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

var p1 = Point(x: 1, y: 2) // Mainīgais p1 glabā datu kopiju (x=1, y=2)
var p2 = p1              // p2 saņem p1 datu kopiju. Tie ir neatkarīgi kopijas.

p1.x = 10                // Mainās tikai p1.x
print(p2.x)              // Izvadīs 1, jo p2 nemainījās

Salīdzinājums ar atsauces tipu (klase):

Īpašība Vērtības tips (struktūra, enum) Atsauces tips (klase)
Kas tiek glabāts mainīgajā Objekta datu kopija Atsauce uz objektu atmiņā
Piešķiršana / Pārsūtīšana Datu kopija Atsauces kopija (norāda uz to pašu objektu)
Izmaiņas ietekmē tikai pašreizējo kopiju ietekmē objektu, uz kuru norāda atsauce (var ietekmēt arī citas mainīgās, kas norāda uz to pašu objektu)