Das Enum-Pattern in Luau
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 51 von 73.
Programme sind voll von Werten aus einer kleinen, festen Menge: Eine Bestellung ist pending, shipped oder delivered; ein Spieler blickt nach up, down, left oder right. Viele Sprachen haben dafür ein enum-Schlüsselwort. Luau hat keines — und es braucht auch keines, da zwei Werkzeuge, die Sie bereits kennen, diese Aufgabe übernehmen.
Muster 1: Die Konstantentabelle. Eine einfache Tabelle ordnet aussagekräftige Namen Werten zu und ersetzt so "magische Zahlen", die im Code verstreut sind:
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2Dies ist ein echten Laufzeitwert: Sie können Status.Active lesen, damit vergleichen und ihn übergeben — genau wie die Tabellen, die Sie bisher verwendet haben.
Muster 2: Die Literal-Union. Ein Typ, der aus exakten String-Werten besteht, unter Verwendung der Literal-Typen aus dem Kapitel über Unions:
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ type errorDie Union existiert nur für den Typechecker — ohne jegliche Laufzeitkosten —, garantiert aber, dass eine Variable nichts außerhalb der definierten Menge enthalten kann. Die beiden Muster ergänzen sich: Die Tabelle liefert Ihnen Laufzeit-Werte unter einem Namen; die Union gibt Ihnen eine Garantie zur Kompilierzeit. Später in diesem Kapitel lernen Sie außerdem table.freeze kennen, was 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