Sobes.tech
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) Референс тури (синф)
Нима сақланади Объект маълумотларининг нусхаси Хотирадаги объектга ҳавола
Тайинлаш / Ўтказиш Маълумотлар нусхаси Ҳаволанинг нусхаси (шундай объектга ишора қилади)
Ўзгартириш Фақат ҳозирги нусхага таъсир қилади Ҳавола қилаётган объектга таъсир қилади (бошқа ўзгартувчиларга ҳам таъсир қилиши мумкин, улар ҳам шу объектга ишора қилади)