Das Enum-Pattern in Luau
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 51 von 73.
Programme sind voller Werte aus einer kleinen, festgelegten Menge: Eine Bestellung ist ausstehend, versendet oder zugestellt; ein Spieler blickt nach oben, nach unten, nach links oder nach rechts. Viele Sprachen haben dafür ein enum-Schlüsselwort. Luau nicht, und es braucht auch keines, weil zwei Werkzeuge, die du bereits kennst, diese Aufgabe abdecken.
Muster 1: die Konstantentabelle. Eine einfache Tabelle ordnet aussagekräftigen Namen Werte zu und ersetzt „magische Zahlen“, die im Code verstreut sind:
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2Das ist ein echter Laufzeitwert: Du kannst Status.Active auslesen, damit vergleichen und ihn weitergeben, genau wie bei den Tabellen, die du bisher verwendet hast.
Muster 2: die Literalkombination. Ein Typ, der aus exakten Zeichenkettenwerten besteht und die Literaltypen verwendet, die du im Kapitel über Kombinationen kennengelernt hast:
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ type errorDie Kombination existiert nur für den Prüfer und verursacht keine Laufzeitkosten, garantiert aber, dass eine Variable nichts außerhalb dieser Menge enthalten kann. Die beiden Muster ergänzen einander: Die Tabelle liefert dir Laufzeit-werte unter einem Namen; die Kombination liefert dir eine Garantie zur Kompilierzeit. Später in diesem Kapitel lernst du außerdem table.freeze kennen, das eine Konstantentabelle davor schützt, zur Laufzeit verändert zu werden.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in Luau
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen8Enums auf die Luau-Art
Das Enum-Pattern in LuauNumerische Enums mit TablesString-Enums als UnionsVerwendung von Literal Union EnumsKonstante Tables einfrierenZusammenfassung: Enums auf die Luau-Art3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und MapsÜbe selbstständig: Online-Lua-Compiler