Menu
CoddyTech

Tipi letterali

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

Tipi come string consentono qualsiasi stringa, ma a volte hanno senso solo pochi valori esatti. Un tipo letterale usa il valore stesso come tipo:

local mode: "dark" = "dark"   -- è consentita solo la stringa "dark"
local locked: true = true      -- è consentito solo il valore booleano true

Da soli, i tipi con un singolo valore sono una curiosità. Combinati con le unioni, diventano uno degli strumenti più utili di Luau: un insieme di valori consentiti rigorosamente controllato:

type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"

local move: Direction = "north"     -- ✓
local state: GameState = "playing"  -- ✓
-- local bad: Direction = "diagonal" -- ✗ errore di tipo!

Ora un errore di battitura come "nort" o un valore non valido come "diagonal" viene rilevato mentre modifichi il codice; con una semplice string, passerebbe inosservato e causerebbe un errore in fase di esecuzione, se sei abbastanza fortunato da accorgertene.

I tipi letterali distinguono tra maiuscole e minuscole e richiedono una corrispondenza esatta: "North" non corrisponde a "north". I letterali stringa sono il caso più comune, ma anche i letterali booleani e, nelle versioni più recenti di Luau, quelli numerici funzionano allo stesso modo. Questo schema, un'unione di stringhe letterali, è anche il modo in cui Luau sostituisce gli enum di altri linguaggi, come vedrai in un capitolo successivo.

challenge icon

Sfida

Facile

Consenti solo quattro nomi di direzione esatti.

  1. Scrivi type Direction = "north" | "south" | "east" | "west".
  2. Scrivi local function movePlayer(direction: Direction): string che restituisca `Moving {direction}`.
  3. Dichiara local playerDirection: Direction = "east" e stampa movePlayer(playerDirection).

Premi Esegui codice: l'output mostra Moving east.

Provalo tu

-- 1) type Direction = "north" | "south" | "east" | "west"
-- 2) movePlayer(direction: Direction): string
-- 3) local playerDirection: Direction = "east", poi stampa il movimento

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online