String-Enums als Unions
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 53 von 73.
Zahlen machen kryptische Protokolle: Wenn du 2 siehst, sagt dir das wenig, wenn du "down" siehst, sagt dir das alles. Für lesbare Enums sind Luau-literale Union-Typen das geeignete Werkzeug: ein Typ, dessen Mitglieder exakt bestimmte 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. Vertippst du dich, erkennt der Prüfer den Fehler 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 du jetzt kennst: Die konstante Tabelle erzeugt einen Laufzeitwert (UserRole), der Mitglieder enthält, während die literale Union überhaupt keinen Wert erzeugt. Es gibt keine Direction-Tabelle, sondern nur eine Regel, die der Prüfer dahingehend durchsetzt, welche Zeichenfolgen passen. Beschreibende, selbstdokumentierende Werte ohne jegliche Laufzeitkosten machen literale Unions zum bevorzugten Enum-Stil in Luau-Code.
Aufgabe
EinfachErstelle einen Literal-Union-Typ namens Direction mit den Mitgliedern "up", "down", "left" und "right".
Erstelle vier Variablen, die jeweils mit Direction typannotiert sind:
upDirection="up"downDirection="down"leftDirection="left"rightDirection="right"
Gib jeweils in einer eigenen Zeile aus:
upDirectiondownDirectionleftDirectionrightDirection- die Nachricht
The player moves left, die mithilfe von String-Interpolation ausleftDirectionerstellt wurde
Probier es selbst
-- Schreibe den Code hier
-- 1) definiere den Typ Direction als Union der vier String-Literale
-- 2) erstelle die vier annotierten Variablen
-- 3) gib jedes aus, dann die interpolierte Nachricht
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