Numerische Enums mit Tables
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 52 von 73.
Erstellen wir das Muster für eine Konstantentabelle richtig. Wähle einen Tabellennamen in PascalCase, gib jedem Member 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 wird nichts automatisch nummeriert. Du wählst jeden Wert selbst. Mit 1 zu beginnen, passt gut zu den Konventionen von Lua, aber jedes Schema funktioniert (HTTP-ähnliche Codes wie 200 und 404 sind ebenfalls in Ordnung).
Member kommen bei Vergleichen besonders gut zur Geltung. Eine Funktion, die eine Rolle erhält, kann anhand der benannten Konstanten verzweigen, statt einzelne 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 als number typisiert ist: Das Tabellenmuster allein schränkt nicht ein, welche Zahlen zulässig sind. Genau diese Garantie bieten Literale-Unionen in der nächsten Lektion.
Aufgabe
EinfachErstelle eine konstante Tabelle namens UserRole mit drei Mitgliedern:
Admin=1Editor=2Viewer=3
Erstelle eine Funktion checkPermissions, die role: number entgegennimmt und Folgendes ausgibt:
Full access granted, wenn die RolleUserRole.AdministEdit access granted, wenn die RolleUserRole.Editorist- andernfalls
View access only
Führe anschließend der Reihe nach Folgendes aus:
- Gib
UserRole.Adminaus - Gib
UserRole.Editoraus - Gib
UserRole.Vieweraus - Rufe
checkPermissions(UserRole.Admin)auf - Rufe
checkPermissions(UserRole.Editor)auf - Rufe
checkPermissions(UserRole.Viewer)auf
Probier es selbst
-- Schreibe Code hier
-- 1) erstelle die UserRole-Konstantentabelle (Admin=1, Editor=2, Viewer=3)
-- 2) schreibe checkPermissions(role: number) mit if/elseif/else
-- 3) gib die drei Mitglieder aus, dann rufe die Funktion für jedes auf
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