Classi sealed e switch esaustivi
Chiudere una gerarchia verificabile dal compilatore
Classi sealed e switch esaustivi è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.
Una famiglia chiusa
Una classe sealed definisce un insieme fisso di sottotipi. Nessun codice esterno al suo file può aggiungerne uno nuovo, quindi la famiglia è completamente nota.
sealed class Shape {}Dichiarare i sottotipi
Le sottoclassi di un tipo sealed risiedono nello stesso file. Insieme formano ogni possibile variante che il compilatore deve considerare.
class Circle extends Shape {}
class Square extends Shape {}Non può essere istanziata direttamente
Una classe sealed è implicitamente astratta, quindi non la si crea mai direttamente. Si costruisce solo uno dei suoi sottotipi conosciuti.
var s = Shape(); // error
var s = Circle(); // okPerché sealed è utile
Poiché i sottotipi sono esaustivi, Dart conosce l'elenco completo. Questo permette a switch di verificare che sia stato gestito ogni singolo caso.
Usare switch sui sottotipi
Uno switch su un valore sealed può confrontare ogni sottotipo tramite un pattern. Ogni ramo vede il tipo preciso corrispondente al confronto.
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}Verifica dell'esaustività
Se dimentica un sottotipo, il compilatore segnala un errore. Non può mai omettere silenziosamente un caso da uno switch sealed.
Non serve default
Poiché ogni caso è coperto, non serve un ramo default. Aggiungerlo nasconderebbe soltanto eventuali casi mancanti futuri.
switch come espressione
Usi switch come espressione per calcolare direttamente un valore. L'esaustività continua ad applicarsi, quindi ogni ramo restituisce qualcosa.
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};Aggiungere una nuova variante
Aggiungendo in seguito un nuovo sottotipo, ogni switch che non lo gestisce viene evidenziato in rosso. Il compilatore la guida nell'aggiornamento di ciascuno.
class Triangle extends Shape {}
// existing switches now errorsealed e abstract
Una classe abstract consente sottotipi esterni non noti, quindi gli switch non possono essere esaustivi. sealed chiude l'insieme per una verifica completa.
Ideale per gli stati
I tipi sealed sono ideali per modellare gli stati dell'app, come Loading, Success ed Error. Ogni ramo dell'interfaccia utente è così garantito. ✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}Verifica rapida
Una verifica rapida sull'esaustività di sealed.
Riepilogo
Ha visto che le classi sealed chiudono una famiglia di tipi e rendono ogni switch esaustivo, trasformando i casi mancanti in errori di compilazione. 🎯
Impara Dart con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Classi sealed e switch esaustivi» è gratuita?
Sì — il testo completo di «Classi sealed e switch esaustivi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.
Cosa imparerò in «Classi sealed e switch esaustivi»?
Chiudere una gerarchia verificabile dal compilatore Eserciti Dart Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Dart Academy?
Non è richiesta alcuna esperienza precedente. Dart Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Classi sealed e switch esaustivi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Dart Academy?
Sì. Ogni lezione Dart Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Campi final e immutabilità profonda
- Classi sealed e switch esaustivi
- Modificatori base, interface e final
- copyWith ed equality basata sul valore