Junior
Co dokładnie przechowuje zmienna, gdy tworzymy obiekt typu value?
sobes.tech AI
Odpowiedź od AI
Gdy tworzymy obiekt typu wartość (struktura, wyliczenie, krotka w Swift), zmienna przechowuje kopię danych tego obiektu bezpośrednio w pamięci. Przypisanie lub przekazanie takiego obiektu jako parametru powoduje skopiowanie jego zawartości.
Przykłady:
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2) // Zmienna p1 przechowuje kopię danych (x=1, y=2)
var p2 = p1 // p2 otrzymuje kopię danych p1. Są to niezależne kopie.
p1.x = 10 // Zmienia się tylko p1.x
print(p2.x) // Wypisze 1, ponieważ p2 się nie zmieniło
Porównanie z typem referencyjnym (klasa):
| Charakterystyka | Typ Wartości (struktura, enum) | Typ Referencyjny (klasa) |
|---|---|---|
| Co jest przechowywane w zmiennej | Kopia danych obiektu | Odwołanie do obiektu w pamięci |
| Przypisanie / Przekazanie | Kopia danych | Kopia odwołania (wskazuje na ten sam obiekt) |
| Zmiana | Dotyczy tylko bieżącej kopii | Dotyczy obiektu, na który wskazuje odwołanie (może wpływać na inne zmienne odwołujące się do tego samego obiektu) |