Junior
Варақаи навъи value вақте ки мо объектро месозем, дар он чӣ ба таври дақиқ нигоҳ дошта мешавад?
sobes.tech AI
Ҷавоб аз AI
Swift-те қимматли тип (құрылым, enumeration, tuple) түридаги объект яратганда, ўзгартувчи бу объектнинг нусхасини тўғридан-тўғри хотирада сақлайди. Бундай объектни тайинлаш ёки параметр сифатида ўтказиш унинг мазмунининг нусхасини яратади.
Маслалар:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2) // p1 ўзгартувчиси, маълумотларнинг нусхасини сақлайди (x=1, y=2)
var p2 = p1 // p2, p1нинг маълумотларининг нусхасини олади. Бу мустақил нусхалар.
p1.x = 10 // фақат p1.x ўзгартирилади
print(p2.x) // 1 чиқаради, чунки p2 ўзгартирилмади
Референс тури (синф) билан таққосганда:
| Хусусият | Қимматли тур (қурилма, enumeration) | Референс тури (синф) |
|---|---|---|
| Нима сақланади | Объект маълумотларининг нусхаси | Хотирадаги объектга ҳавола |
| Тайинлаш / Ўтказиш | Маълумотлар нусхаси | Ҳаволанинг нусхаси (шундай объектга ишора қилади) |
| Ўзгартириш | Фақат ҳозирги нусхага таъсир қилади | Ҳавола қилаётган объектга таъсир қилади (бошқа ўзгартувчиларга ҳам таъсир қилиши мумкин, улар ҳам шу объектга ишора қилади) |