0Pricing
Swift Academy · Lekcja

Właściwości przechowywane i obliczane, obserwatory

Definiujcie właściwości przechowywane i obliczane, twórzcie właściwości obliczane tylko do odczytu oraz get/set i reagujcie na zmiany za pomocą obserwatorów willSet/didSet.

Właściwości przechowywane i obliczane, obserwatory to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 3. 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 3 lekcji w sumie.

Omówienie

W tej lekcji porównano właściwości przechowywane i obliczane oraz pokazano obserwatory willSet/didSet, które reagują na zmiany.

Właściwości przechowywane a obliczane

Właściwości przechowywane przechowują dane. Właściwości obliczane wyznaczają wartość w momencie odczytu.

struct Rectangle {
    // stored properties (hold data)
    var width: Double
    var height: Double

    // computed property (derived on access)
    var area: Double {
        return width * height   // read-only computed
    }
}
let r = Rectangle(width: 3, height: 4)
print("area =", r.area)  // 12

Obliczane get/set

Należy dodać get/set, aby utworzyć obliczaną właściwość do odczytu i zapisu, która utrzymuje spójność niezmienników.

struct Circle {
    var radius: Double           // stored
    var diameter: Double {       // computed read-write
        get { radius * 2 }
        set { radius = newValue / 2 }
    }
}
var c = Circle(radius: 5)
print(c.diameter)   // 10
c.diameter = 14
print(c.radius)     // 7

Obserwatory w praktyce

Obserwatory są wykonywane wokół zmian właściwości przechowywanej. Należy użyć newValue/oldValue, aby uzyskać kontekst.

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5
cnt.value = 9

Obserwatory a właściwości obliczane

Uwagi:

  • Obserwatory dotyczą właściwości przechowywanych, także tych ustawianych w rozszerzeniach.
  • Właściwości obliczane nie obsługują obserwatorów — logikę należy umieścić zamiast tego w set.
  • Obserwatory nie są wywoływane podczas inicjalizacji, zanim pamięć na dane będzie gotowa.

Praktyczny wzorzec

Należy połączyć obserwatory do normalizowania danych wejściowych z obliczaną właściwością do wyznaczania danych wyświetlanych użytkownikowi.

struct Score {
    var raw: Int = 0 {
        didSet {
            if raw < 0 { raw = 0 }
            if raw > 100 { raw = 100 }
        }
    }
    var label: String {
        // computed: derive a label from current raw
        if raw >= 90 { return "A" }
        if raw >= 80 { return "B" }
        if raw >= 70 { return "C" }
        return "D"
    }
}
var s = Score()
s.raw = 120
print(s.raw, s.label)   // 100 A
s.raw = -5
print(s.raw, s.label)   // 0 D

Reguła obserwatorów

Szybkie sprawdzenie: Co jest wykonywane przed zmianą właściwości przechowywanej, a co po niej?

Podsumowanie

Podsumowanie: właściwości przechowywane służą do przechowywania danych, właściwości obliczane do wyznaczania wartości (get/set), a willSet/didSet do reagowania na zmiany właściwości przechowywanych.

Często zadawane pytania

Czy lekcja „Właściwości przechowywane i obliczane, obserwatory” jest bezpłatna?

Tak — pełny tekst „Właściwości przechowywane i obliczane, obserwatory” 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 3 lekcji w sumie.

Co nauczysz się w „Właściwości przechowywane i obliczane, obserwatory”?

Definiujcie właściwości przechowywane i obliczane, twórzcie właściwości obliczane tylko do odczytu oraz get/set i reagujcie na zmiany za pomocą obserwatorów willSet/didSet. Ć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 2 z 3.

Ile czasu zajmuje lekcja „Właściwości przechowywane i obliczane, obserwatory”?

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. Structs a Classes, właściwości i inicjalizatory
  2. Właściwości przechowywane i obliczane, obserwatory
  3. Inicjalizatory i deinit (klasy)
← Powrót do Swift Academy