Sobes.tech
Junior — Middle

Dasturlashda qiymat turlari va referens turlari o'rtasidagi farqlar nimalardan iborat?

sobes.tech AI

AIdan javob

Qiymat turlari (value types) va referens turlari (reference types) ma'lumotlarni saqlash va uzatish usulida farq qiladi.

  • Qiymat turlari to'g'ridan-to'g'ri o'zgaruvchining xotirasida saqlanadi. Belgilash yoki o'tkazishda, o'zi qiymat nusxalanadi. Nusxa ustida o'zgartirishlar aslga ta'sir qilmaydi. Swiftda, qiymat turlariga strukturalar (struct), enumlar (enum) va tupplar kiradi.

  • Referens turlari yirik xotirada saqlanadi, va o'zgaruvchi ob'ektga havolani o'z ichiga oladi. Belgilashda, faqat havola nusxalanadi, ob'ekt emas. Bir havola orqali o'zgartirishlar barcha havolalarda aks etadi. Swiftda, bu sinflar (class) bilan ifodalanadi.

Misol:

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

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var p1 = Point(x: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x) // 1 — nusxa o'zgarmadi

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — ikkala o'zgaruvchi bir xil ob'ektga murojaat qiladi