Sobes.tech
Junior — Middle

Qiymat turlari va murojaat turlari uchun ma'lumotlarni nusxalashda qanday farqlar bor?

sobes.tech AI

AIdan javob

Qiymat turlari (value types) va murojaat turlari (reference types) ma'lumotlarni nusxalash usulida farq qiladi:

  • Qiymat turlari: nusxalashda, to'liq va mustaqil nusxa yaratiladi. Nusxadagi o'zgarishlar aslga ta'sir qilmaydi.
  • Murojaat turlari: nusxalashda, bir xil ob'ektga murojaat nusxalanadi. Bir murojaat orqali o'zgartirishlar barcha murojaatlarga ta'sir qiladi.

Masalan, iOSda, strukturalar (struct) qiymat turlari, sinflar (class) esa murojaat turlari.

Swiftda misol:

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

var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
// p1.x == 0, p2.x == 10 — mustaqil nusxalar

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

var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
// person1.name == "Пётр" — ikkala murojaat bir xil ob'ektga