Sobes.tech
Junior

რა exactly ინახავს ცვლადი, როდესაც ჩვენ ვქმნით value ტიპის ობიექტს?

sobes.tech AI

პასუხი AI-სგან

როდესაც ვქმნით ღირებულების ტიპის ობიექტს (სტრუქტურა, enum, tuple Swift-ში), ცვლადი პირდაპირ მეხსიერებაში ინახავს ამ ობიექტის ნუსხას. ასეთი ობიექტის მინიჭება ან გადაცემა პარამეტრად იწვევს მისი შინაარსის ნუსხას.

მაგალითები:

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) რეფერენციული ტიპი (კლასი)
რა ინახება ცვლადში ობიექტის მონაცემების ნუსხა მეხსიერებაში ობიექტის მითითება
მინიჭება / გადაცემა მონაცემების ნუსხა მითითების ნუსხა (იგივე ობიექტზე მიუთითებს)
ცვლილება გავლენას ახდენს მხოლოდ მიმდინარე ნუსხაზე გავლენას ახდენს მითითებული ობიექტზე (შესაძლებელია სხვა ცვლადებზეც, რომლებიც ამ ობიექტზე მიუთითებენ)