Das Enum-Pattern in Luau
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 55 von 80.
Programme stecken voller Werte aus einer kleinen, festen Menge: Ein Auftrag ist ausstehend, versandt oder zugestellt; ein Spieler blickt nach oben, nach unten, nach links oder nach rechts. Viele Sprachen haben dafür ein Schlüsselwort enum. Luau hat das nicht und braucht es auch nicht, denn zwei Werkzeuge, die du bereits kennst, erfüllen denselben Zweck.
Muster 1: die Konstantentabelle. Eine einfache Tabelle ordnet aussagekräftigen Namen Werte zu und ersetzt so „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 lesen, damit vergleichen und ihn weitergeben, genau wie mit den Tabellen, die du bisher verwendet hast.
Muster 2: die Literaleinheit. Ein Typ, der aus exakten Zeichenfolgenwerten besteht und die Literaltypen verwendet, die du im Kapitel über Vereinigungen kennengelernt hast:
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ TypfehlerDie Vereinigung existiert nur für den Prüfer und verursacht keinerlei Laufzeitkosten, garantiert aber, dass eine Variable nur Werte aus dieser Menge enthalten kann. Die beiden Muster ergänzen sich: Die Tabelle stellt dir Laufzeit-werte unter einem Namen bereit; die Vereinigung gibt dir eine Garantie zur Kompilierzeit. Später in diesem Kapitel lernst du auch table.freeze kennen, das eine Konstantentabelle davor schützt, zur Laufzeit verändert zu werden.
Aufgabe
EinfachProbiere beide Enum-Muster nebeneinander aus.
- Erstelle die konstante Tabelle
local Speed = {Slow = 8, Fast = 24}. - Schreibe
type Pace = "slow" | "fast"und deklarierelocal pace: Pace = "fast". - Gib
Speed.Fastund dannpaceaus.
Klicke auf Run Code: Die Ausgabe zeigt 24 und fast.
Probier es selbst
-- 1) eine konstante Tabelle Speed mit Slow = 8, Fast = 24
-- 2) Typ Pace = "slow" | "fast", dann lokale Variable pace: Pace = "fast"
-- 3) Speed.Fast ausgeben, dann pace
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 Luau4Mit Funktionen arbeiten
Parameter und Rückgabewerte typisierenAnonyme Funktionen typisierenFunktionen ohne RückgabewertOptionale ParameterStandardwerte für ParameterStandardwerte für boolesche WerteFunktionen mit variabler ParameteranzahlFunktionstypen definierenRückblick: typisierte Funktionen7Projekt: Typisierter Aufgabenmanager
Projekt: Die AufgabenstrukturFunktion zum Hinzufügen einer Aufgabe2Grundlegende Typen
Zahl, String und BooleanDer Typ „any“: NotausgangDer Typ „unknown“Nil- und optionale TypenTypinferenz in der PraxisExplizite TypannotationenRückblick: Übung zu grundlegenden Typen5Typ-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 ArraysElemente hinzufügen und auslesenWas ist ein Map-Typ?Maps deklarieren und auf Elemente zugreifenTabellen durchlaufenTabellen mit gemischten FormenEin Raster auslesenEin Raster erstellentable.unpackRückblick: Arrays und MapsÜbe selbstständig: Online-Luau-Compiler