Sobes.tech
Junior

Маалымат түрлөрү менен маанилүү түрлөрүнүн айырмасы эмнеде?

sobes.tech AI

AIден жооп

Маанилердин (Value Types) көчүрүлүшү белгиленген же функцияга өткөрүлгөндө көчүрүлөт. Ар бир экземпляр өзүнүн маалымат көчүрмөсүнө ээ.

Байланыш түрлөрү (Reference Types) белгиленген же функцияга өткөрүлгөндө, ошол эле маалыматтын экземплярына шилтеме өткөрүлөт. Бир шилтемедеги өзгөртүүлөр ошол эле экземплярга таасир этет.

Өзгөчөлүк Маанилердин түрү (Value Type) Байланыш түрү (Reference Type)
Өзгөртүү/өткөрүүдө жүрүм-турум Көчүрүү Шилтеме өткөрүү
Эстутү в жады Stack (Heap) Stack (Stack)
Эстутү башкаруу Автоматтык (stack аркылуу) Автоматтык (ARC)
Swift мисалдары struct, enum, tuple class, func, closure
// Маанилердин түрү мисалы (Struct)
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2, p1дин көчүрмөсү
p2.x = 10   // p2деги өзгөртүү, p1ге таасир этпейт
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)

// Байланыш түрү мисалы (Класс)
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   // c2деги өзгөртүү, c1ге таасир этет, себеби эки шилтеме бир объектке ишара кылат
print("c1: \(c1.x)") // c1: 10
print("c2: \(c2.x)") // c2: 10