String-Enums als Unions
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 57 von 80.
Zahlen sorgen für kryptische Protokolle: Wenn du 2 siehst, sagt dir das wenig; wenn du "down" siehst, sagt es dir alles. Für gut lesbare Enums sind Luau-Literal-Union-Typen das richtige Werkzeug: ein Typ, dessen Mitglieder genau festgelegte Zeichenfolgen sind:
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ Typfehler beim BearbeitenEine mit Direction annotierte Variable kann diese vier Zeichenfolgen und nichts anderes enthalten. Schreibst du eine davon falsch, erkennt die Prüfung das sofort: Der Fehler erreicht niemals einen Spieler.
Zur Laufzeit sind die Werte einfache Zeichenfolgen. Gib sie aus, verkette sie, vergleiche sie mit ==. Alles, was du über Zeichenfolgen weißt, gilt auch hier:
print(facing) -- oben
print(`facing {facing}`) -- facing obenVergleiche die beiden Muster, die dir jetzt zur Verfügung stehen: Die konstante Tabelle erzeugt einen Laufzeitwert (UserRole), der Mitglieder enthält, während die Literal-Union überhaupt keinen Wert erzeugt. Es gibt keine Direction-Tabelle, sondern nur eine Regel, die die Prüfung dafür durchsetzt, welche Zeichenfolgen passen. Aussagekräftige, selbstdokumentierende Werte ohne Laufzeitkosten machen Literal-Unions zum bevorzugten Enum-Stil in Luau-Code.
Aufgabe
EinfachSpeichere eine Richtung, die nur einer von vier Namen entsprechen kann.
- Schreibe
type Direction = "up" | "down" | "left" | "right". - Deklariere
local facing: Direction = "left". - Gib
facingaus, dann`The player moves {facing}`.
Klicke auf Run Code: Die Ausgabe zeigt left und The player moves left.
Probier es selbst
-- 1) Definiere Direction als Vereinigung von vier Strings
-- 2) local facing: Direction = "left"
-- 3) Gib facing aus, dann den Satz
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