Menu
CoddyTech

Enums in 'switch'-Anweisungen

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 61 von 65.

Eine der leistungsstärksten Anwendungen von Enums ist ihre Verwendung mit switch-Anweisungen. Wenn du Enums mit switch-Anweisungen kombinierst, schreibst du Code, der sowohl sicherer als auch einfacher zu warten ist.

So kannst du ein Enum in einer switch-Anweisung verwenden:

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;
}

Der Vorteil der Verwendung von Enums mit switch-Anweisungen besteht darin, dass Dart überprüfen kann, ob du alle möglichen Enum-Werte behandelt hast. Wenn du vergisst, einen Fall für einen der Enum-Werte aufzunehmen, wird das Programm nicht kompiliert, bis du ihn behandelst (oder einen default-Fall hinzufügst). So lassen sich Fehler in deinem Code vermeiden.

Dieser Ansatz ist viel sicherer als die Verwendung von Zeichenketten oder Zahlen in switch-Anweisungen, bei denen Tippfehler zu unerwartetem Verhalten führen könnten. Mit Enums erhältst du eine Prüfung zur Kompilierzeit, die sicherstellt, dass dein Code jedes mögliche Szenario behandelt.

challenge icon

Aufgabe

Einfach

Erstelle ein Programm, das den Zustand einer Spielfigur mithilfe von Enums und switch-Anweisungen verwaltet. Deine Aufgabe ist es:

  1. Ein Enum namens CharacterState mit den folgenden Werten zu definieren: idle, walking, running, jumping und attacking
  2. Eine Variable namens currentState vom Typ CharacterState zu erstellen und ihr den Wert CharacterState.idle zuzuweisen
  3. Eine Funktion namens getStateMessage zu erstellen, die einen Parameter vom Typ CharacterState entgegennimmt und mithilfe einer switch-Anweisung abhängig vom Zustand eine Meldung als Zeichenfolge zurückgibt:
    • Für CharacterState.idle: "Character is standing still" zurückgeben
    • Für CharacterState.walking: "Character is moving slowly" zurückgeben
    • Für CharacterState.running: "Character is moving quickly" zurückgeben
    • Für CharacterState.jumping: "Character is in the air" zurückgeben
    • Für CharacterState.attacking: "Character is fighting" zurückgeben
  4. Die Meldung zum Anfangszustand mithilfe der Funktion in genau diesem Format ausgeben: Initial state: Character is standing still
  5. currentState in CharacterState.walking ändern
  6. Die aktualisierte Zustandsmeldung in genau diesem Format ausgeben: Updated state: Character is moving slowly
  7. currentState in CharacterState.attacking ändern
  8. Die abschließende Zustandsmeldung in genau diesem Format ausgeben: Final state: Character is fighting

Dein Programm sollte die korrekte Verwendung von Enums mit switch-Anweisungen veranschaulichen und zeigen, wie diese Kombination eine typsichere Zustandsverwaltung ermöglicht. Die switch-Anweisung muss alle Enum-Werte behandeln und für jeden Zustand der Spielfigur die passende Meldung zurückgeben. Achte darauf, die Dart-Namenskonventionen einzuhalten und genau die oben angegebenen Zeichenfolgen zu verwenden.

Probier es selbst

import 'dart:io';

// TODO: Definiere hier dein CharacterState-enum

// TODO: Erstelle hier deine getStateMessage-Funktion

void main() {
  // TODO: Schreibe deinen Code unten
  
  // Erstelle die Variable currentState und weise ihr CharacterState.idle zu
  
  // Gib die anfängliche Zustandsmeldung aus
  
  // Setze currentState auf CharacterState.walking
  
  // Gib die aktualisierte Zustandsmeldung aus
  
  // Setze currentState auf CharacterState.attacking
  
  // Gib die abschließende Zustandsmeldung aus
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Dart-Compiler