Klasy sealed i wyczerpujący switch
Zamykanie hierarchii, którą kompilator może sprawdzać
Klasy sealed i wyczerpujący switch to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 2 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 Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Zamknięta rodzina
Klasa sealed definiuje ustalony zbiór podtypów. Żaden kod spoza jej pliku nie może dodać nowego podtypu, więc cała rodzina jest dokładnie znana.
sealed class Shape {}Deklarowanie podtypów
Podklasy typu sealed znajdują się w tym samym pliku. Razem tworzą każdy możliwy variant, który kompilator musi uwzględnić.
class Circle extends Shape {}
class Square extends Shape {}Brak możliwości bezpośredniego tworzenia instancji
Klasa sealed jest niejawnie abstrakcyjna, więc nigdy nie tworzy się jej bezpośrednio. Można tworzyć wyłącznie instancje jej znanych podtypów.
var s = Shape(); // error
var s = Circle(); // okDlaczego sealed pomaga
Ponieważ podtypy są exhaustive, Dart zna ich kompletną listę. Dzięki temu switch może sprawdzić, czy obsłużyli Państwo każdy przypadek.
switch dla podtypów
Instrukcja switch zastosowana do wartości sealed może dopasować każdy podtyp za pomocą wzorca. W każdej gałęzi dostępny jest dokładny typ, który został dopasowany.
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}Sprawdzanie kompletności
Jeśli pominą Państwo podtyp, kompilator zgłosi error. W przypadku sealed switch nie można po cichu pominąć żadnego przypadku.
Brak potrzeby używania default
Skoro każdy przypadek jest obsłużony, nie trzeba dodawać gałęzi default. Jej użycie mogłoby jedynie ukryć brakujące przypadki dodane w przyszłości.
switch jako wyrażenie
Użyj switch jako wyrażenia, aby bezpośrednio obliczyć wartość. Kompletność nadal obowiązuje, więc każda gałąź musi coś zwracać.
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};Dodawanie nowego wariantu
Dodaj później nowy podtyp, a każdy switch, w którym go brakuje, zostanie oznaczony na czerwono. Kompilator wskaże, które miejsca należy zaktualizować.
class Triangle extends Shape {}
// existing switches now errorsealed a abstract
Klasa abstract pozwala na istnienie nieznanych podtypów poza biblioteką, więc instrukcje switch nie mogą być kompletne. Sealed zamyka zbiór i umożliwia pełne sprawdzanie.
Świetne rozwiązanie dla stanów
Typy sealed świetnie nadają się do modelowania states aplikacji, takich jak Loading, Success i Error. Dzięki temu istnienie każdej gałęzi interfejsu użytkownika jest gwarantowane. ✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}Szybkie sprawdzenie
Szybkie sprawdzenie kompletności sealed.
Podsumowanie
Dowiedzieli się Państwo, że klasy sealed zamykają rodzinę typów i sprawiają, że każdy switch jest kompletny, dzięki czemu brakujące przypadki stają się błędami kompilacji. 🎯
Często zadawane pytania
Czy lekcja „Klasy sealed i wyczerpujący switch” jest bezpłatna?
Tak — pełny tekst „Klasy sealed i wyczerpujący switch” 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 Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Klasy sealed i wyczerpujący switch”?
Zamykanie hierarchii, którą kompilator może sprawdzać Ćwiczysz Dart 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ąć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart 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 4.
Ile czasu zajmuje lekcja „Klasy sealed i wyczerpujący switch”?
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 Dart Academy?
Tak. Każda lekcja Dart 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
- Pola final i głęboka niezmienność
- Klasy sealed i wyczerpujący switch
- Modyfikatory base, interface i final
- copyWith i równość wartościowa