Sobes.tech
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, зеро ҳарду ишора ба як объект доранд

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