Sobes.tech
Middle

Маънои чӣ аст, ки навъи арзиш (value type) ба навъи ишора (reference type) тааллуқ дорад؟

sobes.tech AI

Ҷавоб аз AI

Арзиши навъи нусхабардорӣ мешавад ҳангоми таъин ё гузаронидан ба функсия, дар ҳоле ки арзиши навъи истинод аз тариқи истинод гузаронида мешавад, яъне нишондиҳанда ба намунаи мавҷударо нусхабардорӣ мекунад.

Навъҳои Арзиш (Value Types):

  • Сохторҳо (struct)
  • Enumeration (enum)
  • Tuple (tuple)
  • Бисёр навъҳои асосӣ (Int, String, Bool, Array, Dictionary, Set ва ғайра)
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // Арзиши p1 ба p2 нусхабардорӣ мешавад
p2.x = 10

// p1.x ҳоло ҳам 1 аст, p2.x шуд 10
print("p1: \(p1.x)")
print("p2: \(p2.x)")

Навъҳои истинод (Reference Types):

  • Классҳо (class)
  • Функсияҳо (closure)
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
c2.x = 10

// c1.x ҳам 10 шуд
print("c1: \(c1.x)")
print("c2: \(c2.x)")

Фарқҳои асосӣ:

Хусусият Навъи Арзиш (Value Type) Навъи Ишора (Reference Type)
Таъин кардан Нусхаи арзиш Нусхаи ишора (показчик)
Ёдгирӣ Дар стек ҷудо мешавад (барои ҳолатҳои содда) Дар heap ҷудо мешавад
Ҳамкорӣ Ҳар тағирёбанда нусхаи худро дорад Бисёре тағирёбанда метавонанд ба як намуна ишора кунанд
Мутобилӣ Барои тағир додан, нусха бояд тағир дода шавад Тағирот тавассути як ишора барои ҳама намоён аст

Дар таҳияи iOS ҳарду навъ маъмулан истифода мешаванд. Бо донистани фарқиятҳо, шумо метавонед навъи мувофиқро барои вазифаи муайян интихоб кунед ва таъсири тарафҳои нописандро пешгирӣ кунед, махсусан вақте ки бо маълумоти мутобил кор мекунед.