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