Typy wartości i niezmienność
Poznanie, jak let zapobiega modyfikowaniu typów wartości.
Typy wartości i niezmienność to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Struct i enum to typy wartościowe
W języku Swift struct i enum są typami wartościowymi. Przypisanie jednego z nich do nowej zmiennej tworzy jego kopię.
struct Point { var x: Int; var y: Int }
var a = Point(x: 1, y: 2)
var copy = a
copy.x = 99
print(a.x, copy.x)let blokuje całą wartość
Utworzenie struktury za pomocą let sprawia, że cała wartość, łącznie ze wszystkimi jej właściwościami, staje się niezmienna.
struct Counter { var value: Int }
let c = Counter(value: 0)
// c.value = 5 // compile error
print(c.value)var pozwala modyfikować
Należy użyć var, gdy po utworzeniu struktury planują Państwo zmieniać jej właściwości.
struct Counter { var value: Int }
var c = Counter(value: 0)
c.value = 5
print(c.value)Kopiowanie przy przypisaniu
Każda zmienna przechowuje własną, niezależną kopię. Zmiana jednej nigdy nie wpływa na drugą.
struct Box { var label: String }
var first = Box(label: "A")
var second = first
second.label = "B"
print(first.label, second.label)Semantyka wartości w funkcjach
Przekazanie struktury do funkcji przekazuje jej kopię. Oryginał znajdujący się poza funkcją pozostaje niezmieniony.
struct Score { var points: Int }
func bump(_ s: Score) {
var local = s
local.points += 10
}
var s = Score(points: 0)
bump(s)
print(s.points)Niezmienne właściwości
Właściwość zadeklarowana za pomocą let wewnątrz struktury nigdy nie może się zmienić, nawet w instancji var.
struct User { let id: Int; var name: String }
var u = User(id: 1, name: "Ada")
u.name = "Bob"
// u.id = 2 // compile error
print(u.id, u.name)Tablice również są typami wartościowymi
Typy Array, Dictionary i Set w języku Swift są strukturami, więc przy przypisaniu są kopiowane.
var a = [1, 2, 3]
var b = a
b.append(4)
print(a)
print(b)Łańcuchy znaków są typami wartościowymi
String również jest typem wartościowym. Modyfikacja kopii nie zmienia oryginału.
var s1 = "hi"
var s2 = s1
s2 += " there"
print(s1)
print(s2)Dlaczego typy wartościowe pomagają
Semantyka wartości zapobiega błędom wynikającym z przypadkowego współdzielenia stanu. Można analizować wartość lokalnie bez obaw o to, kto jeszcze przechowuje do niej referencję.
struct Config { var retries: Int }
let defaultConfig = Config(retries: 3)
var custom = defaultConfig
custom.retries = 5
print(defaultConfig.retries, custom.retries)Niezmienność i bezpieczeństwo
Oznaczanie wartości jako let wszędzie, gdzie to możliwe, sprawia, że kod jest bezpieczniejszy i czytelniejszy. Kompilator egzekwuje, że wartości te nigdy się nie zmienią.
let limit = 100
let name = "stable"
print(limit, name)Ponowne przypisanie zmiennej let kończy się błędem
Nie można ponownie przypisać wiązania let ani modyfikować przechowywanej przez nie wartości.
let pi = 3.14
// pi = 3.15 // compile error
print(pi)Szybkie sprawdzenie
Przetestuj działanie typów wartościowych.
Podsumowanie
Struktury i typy wyliczeniowe są typami wartościowymi: są kopiowane przy przypisaniu i przekazaniu do funkcji. Wiązanie let blokuje całą wartość, a właściwość let nigdy nie może się zmienić. Zapewnia to przewidywalny, odizolowany stan.
struct P { var n: Int }
var a = P(n: 1)
var b = a
b.n = 9
print(a.n, b.n)Często zadawane pytania
Czy lekcja „Typy wartości i niezmienność” jest bezpłatna?
Tak — pełny tekst „Typy wartości i niezmienność” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Typy wartości i niezmienność”?
Poznanie, jak let zapobiega modyfikowaniu typów wartości. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Typy wartości i niezmienność”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Typy wartości i niezmienność
- Słowo kluczowe mutating
- mutating i ponowne przypisanie self
- Alternatywy dla mutating