Menu
Coddy logo textTech

Les Enums dans les instructions 'switch'

Fait partie de la section Logique & Flux du Journey Dart de Coddy. Leçon 61 sur 65.

L'une des applications les plus puissantes des enums est de les utiliser avec des instructions switch. Lorsque vous combinez des enums avec des instructions switch, vous créez un code qui est à la fois plus sûr et plus facile à maintenir.

Voici comment vous pouvez utiliser une énumération dans une instruction 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;
}

L’avantage d’utiliser des énumérations avec des instructions switch est que Dart peut vérifier que vous avez géré toutes les valeurs possibles de l’énumération. Si vous oubliez d’inclure un cas pour l’une des valeurs de l’énumération, Dart vous avertira, ce qui contribue à prévenir les erreurs dans votre code.

Cette approche est bien plus sûre que l'utilisation de chaînes de caractères ou de nombres dans les instructions switch, où des fautes de frappe pourraient provoquer un comportement inattendu. Avec les enums, vous bénéficiez d'une vérification à la compilation qui garantit que votre code gère tous les scénarios possibles.

challenge icon

Défi

Facile

Créez un programme qui gère l’état d’un personnage de jeu à l’aide d’énumérations et d’instructions switch. Votre tâche consiste à :

  1. Définir une énumération appelée CharacterState avec les valeurs suivantes : idle, walking, running, jumping et attacking
  2. Créer une variable appelée currentState de type CharacterState et lui attribuer la valeur CharacterState.idle
  3. Créer une fonction appelée getStateMessage qui prend un paramètre CharacterState et renvoie un message sous forme de chaîne en fonction de l’état, à l’aide d’une instruction switch :
    • Pour CharacterState.idle : renvoyer "Character is standing still"
    • Pour CharacterState.walking : renvoyer "Character is moving slowly"
    • Pour CharacterState.running : renvoyer "Character is moving quickly"
    • Pour CharacterState.jumping : renvoyer "Character is in the air"
    • Pour CharacterState.attacking : renvoyer "Character is fighting"
  4. Afficher le message d’état initial à l’aide de la fonction, en respectant exactement le format suivant : Initial state: Character is standing still
  5. Modifier currentState pour lui attribuer la valeur CharacterState.walking
  6. Afficher le message d’état mis à jour en respectant exactement le format suivant : Updated state: Character is moving slowly
  7. Modifier currentState pour lui attribuer la valeur CharacterState.attacking
  8. Afficher le message d’état final en respectant exactement le format suivant : Final state: Character is fighting

Votre programme doit montrer l’utilisation correcte des énumérations avec les instructions switch, en illustrant comment cette combinaison permet une gestion des états sûre du point de vue des types. L’instruction switch doit gérer toutes les valeurs de l’énumération et renvoyer le message approprié pour chaque état du personnage. Veillez à respecter les conventions de nommage de Dart et à utiliser exactement les messages sous forme de chaîne spécifiés ci-dessus.

Essayez vous-même

import 'dart:io';

// TODO: Définissez votre enum CharacterState ici

// TODO: Créez votre fonction getStateMessage ici

void main() {
  // TODO: Écrivez votre code ci-dessous
  
  // Créer la variable currentState et lui assigner CharacterState.idle
  
  // Afficher le message d'état initial
  
  // Changer currentState en CharacterState.walking
  
  // Afficher le message d'état mis à jour
  
  // Changer currentState en CharacterState.attacking
  
  // Afficher le message d'état final
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Dart en ligne