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