Numerische Enums mit Tables
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 56 von 80.
Hier ist das Konstantentabellenmuster in voller Länge. Wähle einen Tabellennamen in PascalCase, gib jedem Element eine explizite Zahl, und von da an spricht der Code in Namen:
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}Anders als bei TypeScripts enum werden die Werte nicht automatisch nummeriert. Du wählst jeden Wert selbst. Bei 1 anzufangen, passt gut zu den Konventionen von Lua, aber jedes Schema funktioniert (Codes im HTTP-Stil wie 200 und 404 sind ebenfalls geeignet).
Die Elemente kommen bei Vergleichen besonders zur Geltung. Eine Funktion, die eine Rolle erhält, kann anhand der benannten Konstanten verzweigen, statt einfache Zahlen zu verwenden:
local function checkPermissions(role: number)
if role == UserRole.Admin then
print("Full access granted")
elseif role == UserRole.Editor then
print("Edit access granted")
else
print("View access only")
end
endBeachte, dass der Parameter den Typ number hat: Das Tabellenmuster allein schränkt nicht ein, welche Zahlen zulässig sind. Genau diese Garantie bieten Literal-Unionen in der nächsten Lektion.
Aufgabe
EinfachNenne drei Schwierigkeitsgrade mit einer Konstantentabelle.
- Erstelle
local Level = {Easy = 1, Normal = 2, Hard = 3}. - Schreibe
local function describeLevel(level: number): string, das fürLevel.Easy"Relaxed", fürLevel.Normal"Standard"und andernfalls"Brutal"zurückgibt. - Gib zuerst
Level.Hardund danndescribeLevel(Level.Normal)aus.
Drücke auf Run Code: Die Ausgabe zeigt 3 und Standard.
Probier es selbst
-- 1) die Konstantentabelle Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string mit if/elseif/else
-- 3) Level.Hard ausgeben, dann describeLevel(Level.Normal)
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