String-Enums als Unions
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 53 von 73.
Zahlen erzeugen kryptische Logs: 2 zu sehen sagt Ihnen wenig, "down" zu sehen sagt Ihnen alles. Für lesbare Enums sind Luau's literal union types das Werkzeug — ein Typ, dessen Elemente exakte Strings sind:
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ Typfehler beim BearbeitenEine Variable, die mit Direction typprüfend annotiert ist, kann diese vier Strings enthalten und sonst nichts. Tippen Sie einen falsch, erfasst der Typprüfer dies sofort — der Fehler erreicht nie einen Spieler.
Zur Laufzeit (runtime) sind die Werte einfache Strings. Geben Sie sie aus, verknüpfen Sie sie oder vergleichen Sie sie mit == — alles, was Sie über Strings wissen, gilt hier:
print(facing) -- oben
print(`facing {facing}`) -- facing obenVergleichen Sie die beiden Muster, die Sie nun kennen: Die Konstanten-Tabelle erstellt einen Laufzeitwert (UserRole), der Elemente enthält, während die Literal-Union überhaupt keinen Wert erstellt — es gibt keine Direction-Tabelle, sondern nur eine Regel, die der Prüfer darüber durchsetzt, welche Strings passen. Beschreibende, selbstdokumentierende Werte ohne Laufzeitkosten machen Literal-Unions zum bevorzugten Enum-Stil in Luau-Code.
Aufgabe
EinfachErstelle einen Literal Union Type namens Direction mit den Elementen "up", "down", "left" und "right".
Erstelle vier Variablen, die jeweils mit Direction typisiert sind:
upDirection="up"downDirection="down"leftDirection="left"rightDirection="right"
Gib jeweils in einer eigenen Zeile Folgendes aus:
upDirectiondownDirectionleftDirectionrightDirection- die Nachricht
The player moves left, erstellt mit String-Interpolation ausleftDirection
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