Enums in Match
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 40 von 78.
Eine match-Anweisung kann einen Wert mit Enum-Optionen vergleichen. Jedes Muster ist eine Option, die mit ihrem Enum-Namen geschrieben wird:
enum Light { RED, YELLOW, GREEN }
func _ready():
var light := Light.YELLOW
match light:
Light.RED:
print("Stop")
Light.YELLOW:
print("Slow down")
Light.GREEN:
print("Go")Dies gibt Slow down aus. Wie bei jedem match können sich mehrere Optionen einen Zweig teilen, getrennt durch Kommas, und _ fängt alles andere ab:
match light:
Light.RED, Light.YELLOW:
print("Wait")
_:
print("Go")Eine Funktion, die einen Wert zurückgibt, benötigt auf jedem Pfad ein return. Selbst wenn die Zweige alle Optionen abdecken, meldet GDScript Not all code paths return a value, sofern dem match kein _-Zweig hinzugefügt wird oder kein return darauf folgt:
func next_light(light: Light) -> Light:
match light:
Light.RED:
return Light.GREEN
Light.GREEN:
return Light.YELLOW
_:
return Light.REDDer Parameter und der Rückgabetyp sind das Enum Light. Die Funktion ist auf der obersten Ebene deklariert, wie das Enum.
Aufgabe
EinfachDas Skript deklariert die Aufzählung State mit den Optionen IDLE, WALK, RUN, JUMP und FALL. Vervollständige die Funktion describe(): Sie erhält einen Zustand und gibt dessen Beschreibung zurück, die mit einem match ausgewählt wird:
State.IDLE:"Standing still"State.WALKundState.RUN:"Moving"State.JUMPundState.FALL:"In the air"
Verwende einen Zweig für WALK und RUN und einen für JUMP und FALL. Der vorgegebene Code in _ready() liest eine Zeile mit Zustandsnamen ein und gibt jeden davon mit seiner Beschreibung aus. Für die Eingabe IDLE RUN FALL lautet die Ausgabe:
IDLE: Standing still
RUN: Moving
FALL: In the airProbier es selbst
extends Node
enum State { IDLE, WALK, RUN, JUMP, FALL }
func describe(state: State):
# Gib die Beschreibung des Zustands mit einem match zurück
pass
func _ready():
var names := OS.read_string_from_stdin().split(" ", false)
for state_name in names:
print(state_name, ": ", describe(State[state_name]))
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler