Sobes.tech
Junior

Value turidagi ob'ekt yaratganimizda o'zgaruvchi aniq nima saqlaydi?

sobes.tech AI

AIdan javob

Swift'da qiymat turi (struktur, enum, tuple) turidagi ob'ektni yaratganimizda, o'zgaruvchi bu ob'ektning nusxasini to'g'ridan-to'g'ri xotirada saqlaydi. Bunday ob'ektni tayinlash yoki parametr sifatida o'tkazish uning mazmunining nusxasini yaratadi.

Misollar:

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

var p1 = Point(x: 1, y: 2) // O'zgaruvchi p1, ma'lumotlarning nusxasini saqlaydi (x=1, y=2)
var p2 = p1              // p2, p1 ning ma'lumotlar nusxasini oladi. Bu mustaqil nusxalar.

p1.x = 10                // Faqat p1.x o'zgartiriladi
print(p2.x)              // 1 chiqaradi, chunki p2 o'zgarmadi

Refereans turiga (klass) taqqoslaganda:

Xususiyat Qiymat turi (struktur, enum) Referans turi (klass)
O'zgaruvchida nima saqlanadi Ob'ektning ma'lumotlar nusxasi Xotirdagi ob'ektga havola
Tayinlash / O'tkazish Ma'lumotlarning nusxasi Havolaning nusxasi (bir xil ob'ektga ishora qiladi)
O'zgartirish Faqat joriy nusxaga ta'sir qiladi Havola qilgan ob'ektga ta'sir qiladi (boshqa o'zgaruvchilar ham, ularni havola qilayotgan bo'lsa, ta'sir qilishi mumkin)