Junior
Какво точно съхранява променливата, когато създаваме обект от тип value?
sobes.tech AI
Отговор от AI
Когато създаваме обект от тип стойност (структура, изброяване, кортеж в 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) | Тип референция (класа) |
|---|---|---|
| Какво се съхранява в променливата | Копие на данните на обекта | Референция към обекта в паметта |
| Присвояване / Предаване | Копие на данните | Копие на референцията (посочва към същия обект) |
| Промяна | Влияе само върху текущото копие | Влияе върху обекта, към който сочи референцията (може да влияе и на други променливи, които сочат към същия обект) |