0Pricing
Swift Academy · Lekcja

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

  1. Typy wartości i niezmienność
  2. Słowo kluczowe mutating
  3. mutating i ponowne przypisanie self
  4. Alternatywy dla mutating
← Powrót do Swift Academy