Junior — Middle
Тафовут байни намудҳои маълумоти истинодӣ ва арзишӣ дар забони Swift чист?
sobes.tech AI
Ҷавоб аз AI
Дар Swift, намудҳои маълумот ба намудҳои арзиш (value types) ва намудҳои истинод (reference types) тақсим мешаванд.
-
Намудҳои арзиш (масалан, структураҳо
struct, enumeration-ҳоenum, tuple-ҳо) дар вақти таъин ё гузаронидан ба функсия нусхабардорӣ мешаванд. Ин маънои онро дорад, ки ҳар як тағирёбанда нусхаи мустақил аз маълумот дорад. -
Намудҳои истинод (синфҳо
class) дар вақти таъин ё гузаронидан ба як объект дар хотира ишора мекунанд. Тағирот тавассути як ишора дар дигарҳо низ дида мешавад.
Масалан:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0, зеро p2 нусхаи p1 аст
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, зеро ҳарду ишора ба як объект доранд
Бинобар ин, фарқ дар он аст, ки намудҳои арзиш нусхабардорӣ мешаванд, намудҳои истинод бошад, ишора ба як объектро мегузоранд.