sealed-klasser og uttømmende switch
Lukk et hierarki som kompilatoren kan kontrollere
sealed-klasser og uttømmende switch er en gratis leksjon i Dart Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Dart Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Dart Academy inneholder totalt 4 leksjoner.
En lukket familie
En sealed-klasse definerer et fast sett med undertyper. Ingen kode utenfor filen kan legge til en ny type, så familien er fullstendig kjent.
sealed class Shape {}Deklarere undertyper
Underklasser av en sealed-type ligger i samme fil. Til sammen utgjør de alle mulige varianter som kompilatoren må ta hensyn til.
class Circle extends Shape {}
class Square extends Shape {}Kan ikke opprettes direkte
En sealed-klasse er implisitt abstrakt, så De oppretter den aldri direkte. De oppretter bare én av de kjente undertypene.
var s = Shape(); // error
var s = Circle(); // okHvorfor sealed er nyttig
Fordi undertypene er uttømmende, kjenner Dart hele listen. Derfor kan switch kontrollere at De har håndtert hvert eneste tilfelle.
Switch over undertyper
En switch over en sealed-verdi kan samsvare med hver undertype ved hjelp av mønstre. Hver gren ser den nøyaktige typen den samsvarte med.
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}Uttømmelighet kontrollert
Hvis De glemmer en undertype, rapporterer kompilatoren en feil. De kan aldri stille og rolig utelate et tilfelle fra en sealed-switch.
Ingen default nødvendig
Siden alle tilfeller er dekket, trenger De ingen default-gren. En slik gren ville bare skjule fremtidige manglende tilfeller.
switch som uttrykk
Bruk switch som et uttrykk for å beregne en verdi direkte. Kravet om uttømmelighet gjelder fortsatt, så hver gren må returnere noe.
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};Legge til en ny variant
Legg til en ny undertype senere, så markeres alle switch-uttrykk som mangler den, med rødt. Kompilatoren veileder Dem gjennom oppdateringen av hvert uttrykk.
class Triangle extends Shape {}
// existing switches now errorsealed kontra abstract
En abstract-klasse tillater ukjente undertyper utenfra, så switch-uttrykk kan ikke være uttømmende. Sealed lukker settet slik at alt kan kontrolleres.
Utmerket for tilstander
Sealed-typer egner seg svært godt til å modellere appens tilstander, for eksempel Loading, Success og Error. Da er De garantert at hver UI-gren finnes. ✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}Rask sjekk
En rask sjekk av uttømmelighet med sealed.
Oppsummering
De har sett at sealed-klasser lukker en typefamilie og gjør alle switch-uttrykk uttømmende, slik at manglende tilfeller blir kompileringsfeil. 🎯
Lær deg Dart med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «sealed-klasser og uttømmende switch» gratis?
Ja – hele teksten i «sealed-klasser og uttømmende switch» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Dart Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Dart Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «sealed-klasser og uttømmende switch»?
Lukk et hierarki som kompilatoren kan kontrollere Du øver på Dart Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Dart Academy?
Ingen tidligere erfaring er nødvendig. Dart Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «sealed-klasser og uttømmende switch»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Dart Academy-leksjonen?
Ja. Alle Dart Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Final-felter og dyp uforanderlighet
- sealed-klasser og uttømmende switch
- base-, interface- og final-modifikatorer
- copyWith og verdiekvivalens