Menu
Coddy logo textTech

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
end

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

challenge icon

Aufgabe

Einfach

Erstelle eine konstante Tabelle namens UserRole mit drei Mitgliedern:

  • Admin = 1
  • Editor = 2
  • Viewer = 3

Erstelle eine Funktion checkPermissions, die role: number entgegennimmt und Folgendes ausgibt:

  • Full access granted, wenn die Rolle UserRole.Admin ist
  • Edit access granted, wenn die Rolle UserRole.Editor ist
  • andernfalls View access only

Führe anschließend der Reihe nach Folgendes aus:

  1. Gib UserRole.Admin aus
  2. Gib UserRole.Editor aus
  3. Gib UserRole.Viewer aus
  4. Rufe checkPermissions(UserRole.Admin) auf
  5. Rufe checkPermissions(UserRole.Editor) auf
  6. 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
quiz iconTeste dich selbst

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

Übe selbstständig: Online-Lua-Compiler