Numerische Enums mit Tables
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 52 von 73.
Lass uns das Muster für Constant-Tables richtig aufbauen. Wähle einen Tabellennamen in PascalCase, weise jedem Mitglied eine explizite Nummer zu, 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. Bei 1 zu beginnen passt gut zu den Luau-Konventionen, aber jedes Schema funktioniert (HTTP-ähnliche Codes wie 200 und 404 sind ebenfalls völlig in Ordnung).
Mitglieder glänzen in Vergleichen. Eine Funktion, die eine Rolle empfängt, kann anhand der benannten Konstanten verzweigen anstelle von bloßen Zahlen:
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 erlaubt sind. Genau diese Garantie fügen Literal Unions in der nächsten Lektion hinzu.
Aufgabe
EinfachErstelle eine local Tabelle namens UserRole mit three members:
Admin=1Editor=2Viewer=3
Erstelle eine function checkPermissions, die role: number entgegennimmt und Folgendes ausgibt:
Full access granted, wenn die RolleUserRole.AdministEdit access granted, wenn die RolleUserRole.EditoristView access onlyandernfalls
Danach, in dieser Reihenfolge:
printUserRole.AdminprintUserRole.EditorprintUserRole.ViewercallcheckPermissions(UserRole.Admin)callcheckPermissions(UserRole.Editor)callcheckPermissions(UserRole.Viewer)
Probier es selbst
-- Schreibe hier den Code
-- 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, rufe dann 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