Menu
CoddyTech

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
end

Beachte, 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.

challenge icon

Aufgabe

Einfach

Nenne drei Schwierigkeitsgrade mit einer Konstantentabelle.

  1. Erstelle local Level = {Easy = 1, Normal = 2, Hard = 3}.
  2. Schreibe local function describeLevel(level: number): string, das für Level.Easy "Relaxed", für Level.Normal "Standard" und andernfalls "Brutal" zurückgibt.
  3. Gib zuerst Level.Hard und dann describeLevel(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

Übe selbstständig: Online-Luau-Compiler