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 өзгөргөн эмес
Референс түрү (класа) менен салыштырып:
| Өзгөчөлүк | Баалуу түрү (структура, enum) | Референс түрү (класа) |
|---|---|---|
| Эмне сакталат | Объекттин маалыматтарынын нускасы | Эсинде объектке шилтеме |
| Белгилөө / өткөрүү | Маалыматтардын нускасы | Шилтеменин нускасы (ошол эле объектке көрсөтөт) |
| Өзгөртүү | Тек гана учурдагы нускага таасир этет | Шилтемелеген объектке таасир этет (башка өзгөрмөлөргө да таасир этиши мүмкүн, алар да ошол эле объектке шилтеме кылышы мүмкүн) |