0Pricing
Dart Academy · Lekcja

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(); // ok

Dlaczego 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 error

sealed 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

  1. Pola final i głęboka niezmienność
  2. Klasy sealed i wyczerpujący switch
  3. Modyfikatory base, interface i final
  4. copyWith i równość wartościowa
← Powrót do Dart Academy