Gli enum nelle istruzioni 'switch'
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 61 di 65.
Una delle applicazioni più potenti degli enum è usarli con le istruzioni switch. Quando combini gli enum con le istruzioni switch, crei codice più sicuro e più facile da mantenere.
Ecco come puoi usare un enum in un'istruzione switch:
enum Status {
pending,
running,
completed
}
Status currentStatus = Status.pending;
switch (currentStatus) {
case Status.pending:
print('Task is waiting to start');
break;
case Status.running:
print('Task is currently in progress');
break;
case Status.completed:
print('Task has been finished');
break;
}Il bello di usare gli enum con le istruzioni switch è che Dart può verificare che tu abbia gestito tutti i possibili valori dell’enum. Se dimentichi di includere un case per uno dei valori dell’enum, Dart ti avviserà, aiutandoti a prevenire bug nel tuo codice.
Questo approccio è molto più sicuro che usare stringhe o numeri nelle istruzioni switch, dove gli errori di battitura potrebbero causare comportamenti imprevisti. Con gli enum, hai un controllo in fase di compilazione che garantisce che il tuo codice gestisca ogni scenario possibile.
Sfida
FacileCrea un programma che gestisca lo stato di un personaggio di gioco usando gli enum e le istruzioni switch. Il tuo compito è:
- Definire un enum chiamato
CharacterStatecon i seguenti valori:idle,walking,running,jumpingeattacking - Creare una variabile chiamata
currentStatedi tipoCharacterStatee assegnarle il valoreCharacterState.idle - Creare una funzione chiamata
getStateMessageche accetti un parametroCharacterStatee restituisca un messaggio stringa in base allo stato, usando un'istruzione switch: - Per
CharacterState.idle: restituire"Character is standing still" - Per
CharacterState.walking: restituire"Character is moving slowly" - Per
CharacterState.running: restituire"Character is moving quickly" - Per
CharacterState.jumping: restituire"Character is in the air" - Per
CharacterState.attacking: restituire"Character is fighting" - Stampare il messaggio dello stato iniziale usando la funzione con il formato esatto:
Initial state: Character is standing still - Modificare
currentStateinCharacterState.walking - Stampare il messaggio dello stato aggiornato con il formato esatto:
Updated state: Character is moving slowly - Modificare
currentStateinCharacterState.attacking - Stampare il messaggio dello stato finale con il formato esatto:
Final state: Character is fighting
Il tuo programma dovrebbe dimostrare l'uso corretto degli enum con le istruzioni switch, mostrando come questa combinazione consenta una gestione dello stato sicura rispetto ai tipi. L'istruzione switch deve gestire tutti i valori dell'enum e restituire il messaggio appropriato per ogni stato del personaggio. Assicurati di seguire le convenzioni di denominazione di Dart e di usare esattamente i messaggi stringa specificati sopra.
Provalo tu
import 'dart:io';
// TODO: Definisci qui l'enum CharacterState
// TODO: Crea qui la funzione getStateMessage
void main() {
// TODO: Scrivi il tuo codice qui sotto
// Crea la variabile currentState e assegnale CharacterState.idle
// Stampa il messaggio dello stato iniziale
// Imposta currentState su CharacterState.walking
// Stampa il messaggio dello stato aggiornato
// Imposta currentState su CharacterState.attacking
// Stampa il messaggio dello stato finale
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti unici6Gestione di base degli errori
Cosa sono le eccezioni?Il blocco 'try-catch'Gestire le eccezioni con 'on'Il blocco 'finally'Lanciare un'eccezioneRiepilogo - Divisione sicura9Enumerazioni (Enum)
Cosa sono gli enum?Definire un enum sempliceUsare gli enum nelle variabiliGli enum nelle istruzioni 'switch'Riepilogo - SemaforoEsercitati da solo: Compilatore Dart online