Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Crea un programma che gestisca lo stato di un personaggio di gioco usando gli enum e le istruzioni switch. Il tuo compito è:

  1. Definire un enum chiamato CharacterState con i seguenti valori: idle, walking, running, jumping e attacking
  2. Creare una variabile chiamata currentState di tipo CharacterState e assegnarle il valore CharacterState.idle
  3. Creare una funzione chiamata getStateMessage che accetti un parametro CharacterState e 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"
  4. Stampare il messaggio dello stato iniziale usando la funzione con il formato esatto: Initial state: Character is standing still
  5. Modificare currentState in CharacterState.walking
  6. Stampare il messaggio dello stato aggiornato con il formato esatto: Updated state: Character is moving slowly
  7. Modificare currentState in CharacterState.attacking
  8. 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
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online