Middle
Qaysi ma'lumot turi (value type) referans turi (reference type) ga tegishli bo'lsa, bu nima anglatadi?
sobes.tech AI
AIdan javob
Qiymat turi belgilash yoki funktsiyaga o'tkazishda nusxa olinadi, referans turi esa referens orqali o'tkaziladi, ya'ni mavjud nusxa uchun ko'rsatkich nusxa olinadi.
Qiymat Turlari (Value Types):
- Tuzilmalar (struct)
- Enumlar (enum)
- Tuple (tuple)
- Ko'pchilik asosiy turlar (Int, String, Bool, Array, Dictionary, Set va boshqalar)
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p1 ning qiymati p2 ga nusxa olinadi
p2.x = 10
// p1.x hali ham 1, p2.x 10 bo'ldi
print("p1: \(p1.x)")
print("p2: \(p2.x)")
Referans Turlari (Reference Types):
- Sinflar (class)
- Funktsiyalar (closure funksiyalar)
class Coordinate {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2 c1 bilan bir xil nusxaga murojaat qiladi
c2.x = 10
// c1.x ham 10 bo'ldi
print("c1: \(c1.x)")
print("c2: \(c2.x)")
Asosiy farqlar:
| Xususiyat | Qiymat Turi (Value Type) | Referans Turi (Reference Type) |
|---|---|---|
| Belgilash | Qiymat nusxasi | Referans nusxasi (ko'rsatkich) |
| Xotira | Stackda ajratiladi (oddiy holatlar uchun) | Heapda ajratiladi |
| Umumiy foydalanish | Har bir o'zgaruvchi o'z nusxasiga ega | Bir nechta o'zgaruvchilar bir xil nusxaga murojaat qilishi mumkin |
| Mutability | O'zgartirish uchun nusxani o'zgartirish kerak | Bir referens orqali o'zgartirish hamma uchun ko'rinadi |
iOS dasturlashda har ikkala tur ham keng qo'llaniladi. Ularning farqlarini bilib, har bir vazifa uchun mos turni tanlash va istalmagan yon ta'sirlarni oldini olish mumkin, ayniqsa o'zgartiriladigan ma'lumotlar bilan ishlaganda.