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 ҳарду навъ маъмулан истифода мешаванд. Бо донистани фарқиятҳо, шумо метавонед навъи мувофиқро барои вазифаи муайян интихоб кунед ва таъсири тарафҳои нописандро пешгирӣ кунед, махсусан вақте ки бо маълумоти мутобил кор мекунед.