Junior — Middle
Дар барномасозӣ, фарқиятҳои байни намудҳои арзишӣ ва намудҳои истинодӣ чист?
sobes.tech AI
Ҷавоб аз AI
Таснифҳои арзиш (value types) ва навъҳои ишора (reference types) дар бораи чӣ гуна нигоҳ доштани маълумот ва интиқол додани онҳо фарқ мекунанд.
-
Таснифҳои арзиш мустақиман дар хотираи тағйирёбанда нигоҳ дошта мешаванд. Ҳангоми таъин ё интиқол, худи арзиш нусхабардорӣ мешавад. Тағйирот дар нусха ба оригинал таъсир намерасонад. Дар Swift, таснифҳои арзишӣ структураҳо (struct), enumeration (enum) ва tuples-ро дар бар мегиранд.
-
Навъҳои ишора дар heap нигоҳ дошта мешаванд, ва тағйирёбанда ишора ба объектро дорад. Ҳангоми таъин, танҳо ишора нусхабардорӣ мешавад, на объект. Тағйирот тавассути як ишора дар ҳама ишораҳо таҷассум меёбад. Дар Swift, инҳо синфҳо (class) мебошанд.
Масалан:
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 — нусха тағйир наёфтааст
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob — ҳарду тағйирёбанда ба як объект ишора мекунанд