Menu
CoddyTech

Enum numerici con le tabelle

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 56 di 80.

Ecco il modello con tabella di costanti nella sua forma completa. Scegli un nome di tabella in PascalCase, assegna a ogni membro un numero esplicito e, da quel momento in poi, il codice usa i nomi:

local UserRole = {
    Admin = 1,
    Editor = 2,
    Viewer = 3,
}

A differenza di enum di TypeScript, i numeri non vengono assegnati automaticamente. Scegli tu ogni valore. Iniziare da 1 si adatta bene alle convenzioni di Lua, ma va bene qualsiasi schema (anche codici in stile HTTP come 200 e 404).

I membri sono particolarmente utili nei confronti. Una funzione che riceve un ruolo può diramarsi in base alle costanti con nome anziché a numeri senza nome:

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

Nota che il parametro è tipizzato come number: il solo modello con tabella non limita i numeri consentiti. È proprio questa garanzia che le unioni di valori letterali aggiungono nella prossima lezione.

challenge icon

Sfida

Facile

Dai un nome a tre livelli di difficoltà con una tabella di costanti.

  1. Crea local Level = {Easy = 1, Normal = 2, Hard = 3}.
  2. Scrivi local function describeLevel(level: number): string che restituisca "Relaxed" per Level.Easy, "Standard" per Level.Normal e, altrimenti, "Brutal".
  3. Stampa Level.Hard, poi describeLevel(Level.Normal).

Premi Esegui il codice: l'output mostra 3 e Standard.

Provalo tu

-- 1) la tabella di costanti Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string con if/elseif/else
-- 3) stampa Level.Hard, poi describeLevel(Level.Normal)

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online