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