Menu
CoddyTech

Enum di stringhe come unioni

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

I numeri rendono i log criptici: vedere 2 ti dice poco, vedere "down" ti dice tutto. Per creare enum leggibili, i tipi unione di valori letterali di Luau sono lo strumento giusto: un tipo i cui membri sono stringhe esatte:

type Direction = "up" | "down" | "left" | "right"

local facing: Direction = "up"    -- ✓
local typo: Direction = "upp"     -- ✗ errore di tipo durante la modifica

Una variabile annotata con Direction può contenere quelle quattro stringhe e nient'altro. Se ne scrivi una in modo errato, il verificatore se ne accorge subito: il bug non raggiunge mai un giocatore.

In fase di esecuzione, i valori sono semplici stringhe. Stampale, concatenale, confrontale con ==. Tutto ciò che sai sulle stringhe si applica:

print(facing)            -- su
print(`facing {facing}`) -- facing verso l'alto

Confronta i due schemi che hai a disposizione: la tabella di costanti crea un valore in fase di esecuzione (UserRole) che contiene membri, mentre l'unione di valori letterali non crea alcun valore. Non esiste una tabella Direction, ma solo una regola imposta dal verificatore su quali stringhe sono ammesse. Valori descrittivi e autoesplicativi, senza costi in fase di esecuzione: ecco perché le unioni di valori letterali sono lo stile enum preferito nel codice Luau.

challenge icon

Sfida

Facile

Memorizza una direzione che può essere solo uno di quattro nomi.

  1. Scrivi type Direction = "up" | "down" | "left" | "right".
  2. Dichiara local facing: Direction = "left".
  3. Stampa facing, poi `The player moves {facing}`.

Premi Esegui codice: l'output mostra left e The player moves left.

Provalo tu

-- 1) definisci il tipo Direction come un'unione di quattro stringhe
-- 2) local facing: Direction = "left"
-- 3) stampa facing, poi la frase

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online