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) // 12Obliczane 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) // 7Obserwatory 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 = 9Obserwatory 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 DReguł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
- Structs a Classes, właściwości i inicjalizatory
- Właściwości przechowywane i obliczane, obserwatory
- Inicjalizatory i deinit (klasy)