Enum-Werte
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 39 von 78.
Jede Enum-Option ist ein int, daher kannst du Optionen vergleichen und mit ihnen rechnen:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
print(Day.FRIDAY) # 4
print(Day.SATURDAY > Day.FRIDAY) # true
print(Day.FRIDAY + 1) # 5Das Enum selbst funktioniert wie ein Wörterbuch, das Namen Werten zuordnet. keys() gibt die Namen der Reihe nach zurück, values() die Werte und size() die Anzahl der Optionen:
print(Day.keys()) # ["MONDAY", "TUESDAY", ..., "SUNDAY"]
print(Day.size()) # 7Um den Namen eines Werts auszugeben, greifst du mit diesem auf keys() zu. Das funktioniert, wenn die Optionen die Standardwerte 0, 1, 2... haben. Für ein Enum mit festgelegten Werten verwendest du find_key(), das den Namen eines Werts zurückgibt:
var today := Day.SATURDAY
print(Day.keys()[today]) # SATURDAYMit enum Coin { COPPER = 1, SILVER = 10 } auf der obersten Ebene liegt Coin.keys()[10] außerhalb des gültigen Bereichs, während find_key() funktioniert:
print(Coin.find_key(10)) # SILVERUmgekehrt, also von einem als Text gespeicherten Namen zu seinem Wert, verwendest du eckige Klammern. Prüfe zuerst den Namen mit has(): Ein Name, der nicht im Enum enthalten ist, ist ein Fehler.
var text := "FRIDAY"
if Day.has(text):
print(Day[text]) # 4for day_name in Day: durchläuft die Namen, ähnlich wie eine Schleife über ein Dictionary.
Aufgabe
EinfachDas Skript deklariert das Enum Day, von MONDAY bis SUNDAY. Das Programm liest zwei Zeilen ein: den Namen eines Wochentags in Großbuchstaben und eine Anzahl von Tagen (eine ganze Zahl, 0 oder größer).
Gib zwei Zeilen aus:
- Den Namen,
has the valueund den Wert dieses Wochentags im Enum In, die Anzahl,days:und den Namen des Wochentags so viele Tage später
Nach SUNDAY beginnt die Woche wieder mit MONDAY. Für die Eingaben FRIDAY und 3 lautet die Ausgabe:
FRIDAY has the value 4
In 3 days: MONDAYProbier es selbst
extends Node
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
var day_name := OS.read_string_from_stdin()
var days := int(OS.read_string_from_stdin())
# Gib den Wert des Tages und den des Tages nach so vielen Tagen aus
pass
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