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