Menu
Coddy logo textTech

Enums in 'switch'-Anweisungen

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

Eine der leistungsfähigsten Anwendungen von Enums ist deren Verwendung mit switch-Anweisungen. Wenn Sie Enums mit switch-Anweisungen kombinieren, erstellen Sie Code, der sowohl sicherer als auch wartungsfreundlicher 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 Enumerationen mit switch-Anweisungen besteht darin, dass Dart überprüfen kann, ob du alle möglichen Enumerationswerte behandelt hast. Wenn du vergisst, einen Fall für einen der Enumerationswerte einzuschließen, wird Dart dich warnen und so dazu beitragen, Fehler in deinem Code zu verhindern.

Dieser Ansatz ist viel sicherer als die Verwendung von Strings oder Zahlen in switch-Anweisungen, bei denen Tippfehler zu unerwartetem Verhalten führen könnten. Mit Enums erhalten Sie eine Überprüfung zur Kompilierzeit, die sicherstellt, dass Ihr Code jedes mögliche Szenario abdeckt.

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 eine Textmeldung basierend auf dem Zustand 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 des Anfangszustands mithilfe der Funktion im exakten Format auszugeben: Initial state: Character is standing still
  5. Den Wert von currentState in CharacterState.walking zu ändern
  6. Die aktualisierte Zustandsmeldung im exakten Format auszugeben: Updated state: Character is moving slowly
  7. Den Wert von currentState in CharacterState.attacking zu ändern
  8. Die Meldung des Endzustands im exakten Format auszugeben: Final state: Character is fighting

Dein Programm sollte die korrekte Verwendung von Enums mit switch-Anweisungen demonstrieren 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 entsprechende Meldung zurückgeben. Achte darauf, die Dart-Namenskonventionen zu befolgen und die oben angegebenen exakten Textmeldungen 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 Nachricht für den Anfangszustand aus
  
  // Ändere currentState zu CharacterState.walking
  
  // Gib die aktualisierte Zustandsnachricht aus
  
  // Ändere currentState zu CharacterState.attacking
  
  // Gib die finale Zustandsnachricht 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