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) -- 2Questo è 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 tipoL’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.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Introduzione a Luau
1Per iniziare con Luau
Che cos'è Luau?Perché usare Luau?Il tuo primo codice LuauVerifica dei tipi e modalità di erroreRiepilogo: introduzione a Luau4Lavorare con le funzioni
Tipizzare i parametri e i valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate2Tipi fondamentali
Tipi di base: num, str, boolIl tipo 'any': una via di fugaIl tipo 'unknown'Nil e tipi opzionaliL'inferenza dei tipi in azioneAnnotazioni esplicite dei tipiRipasso: esercizi sui tipi fondamentali5Alias, unioni e intersezioni
Alias di tipo per i primitiviTipi unioneLavorare con i tipi unioneTipi letteraliTipi intersezioneCombinare gli alias di tipoRiepilogo: combinazioni avanzate di tipi8Gli enum, secondo lo stile di Luau
Il pattern degli enum in LuauEnum numerici con le tabelleEnum di stringhe come unioniUsare enum con unioni di valori letteraliCongelare le tabelle costantiRiepilogo: gli enum, secondo lo stile di Luau3Tabelle tipizzate: array e mappe
Array tipizzatiAggiungere e leggere elementiChe cos'è un tipo Map?Dichiarare e accedere alle mappeIterare sulle tabelleTabelle con strutture misteArray tipizzati multidimensionalitable.unpack e argomenti variabiliRiepilogo: array e mappeEsercitati da solo: Compilatore Luau online