Menu
Coddy logo textTech

Il pattern degli enum in Luau

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 51 di 73.

I programmi sono pieni di valori scelti da un insieme piccolo e fisso: un ordine è in attesa, spedito o consegnato; un giocatore è rivolto verso l’alto, verso il basso, a sinistra o a destra. Molti linguaggi hanno una parola chiave enum per questo. Luau non ce l’ha e non ne ha bisogno, perché due strumenti che già conosci svolgono questo compito.

Schema 1: la tabella di costanti. Una semplice tabella associa nomi significativi a valori, sostituendo i «numeri magici» sparsi nel codice:

local Status = {
    Pending = 1,
    Active = 2,
    Done = 3,
}

print(Status.Active) -- 2

Questo è un vero valore a runtime: puoi leggere Status.Active, confrontarlo e passarlo ad altri, proprio come le tabelle che hai usato finora.

Schema 2: l’unione di valori letterali. Un tipo composto da valori stringa esatti, usando i tipi letterali che hai incontrato nel capitolo sulle unioni:

type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow"    -- ✗ errore di tipo

L’unione esiste solo per il verificatore, senza alcun costo a runtime, ma garantisce che una variabile non possa contenere valori al di fuori dell’insieme. I due schemi si completano a vicenda: la tabella ti fornisce valori a runtime sotto un unico nome; l’unione ti offre una garanzia in fase di compilazione. Più avanti in questo capitolo incontrerai anche table.freeze, che protegge una tabella di costanti dalle modifiche a runtime.

Provalo tu

Questa lezione non include una sfida di codice.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online