Junior
Ի՞նչ է հենց պահպանում փոփոխականը, երբ մենք ստեղծում ենք value տիպի օբյեկտ։
sobes.tech AI
Պատասխան AI-ից
Swift-ում արժեքի տիպի (ստրուկտուրա, enum, 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) | Հղման տիպ (класа) |
|---|---|---|
| Ինչ է պահվում փոփոխականում | Օբյեկտի տվյալների կոպիան | Հղում օբյեկտին հիշողության մեջ |
| Թվայնում / փոխանցում | Տվյալների կոպիան | Հղման կոպիան (հուշում է նույն օբյեկտին) |
| Փոփոխություն | Միայն ընթացիկ կոպի վրա է ազդում | Օբյեկտին, որի վրա հուշում է հղումը, է ազդում (կարող է ազդել նաև այլ փոփոխականների վրա, որոնք հղում են անում նույն օբյեկտին) |