Proprietà opzionali
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 39 di 73.
Non tutti i campi sono sempre presenti. In Lua, un campo mancante di una tabella viene semplicemente letto come nil: è flessibile, ma è anche così che si insinuano bug come attempt to concatenate a nil value.
Luau permette di indicarlo esplicitamente nella forma: aggiungi ? dopo il tipo di un campo per contrassegnarlo come facoltativo:
type User = {
name: string, -- obbligatorio
email: string?, -- facoltativo: string o nil
}
local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ va bene, email è facoltativoHai già incontrato questo concetto con le variabili: string? è una forma abbreviata di string | nil. La stessa idea ora si applica ai singoli campi di una forma.
Poiché un campo facoltativo potrebbe essere nil, devi controllarlo prima di usarlo. Lo schema classico di Lua funziona e, in modalità strict, il verificatore restringe il tipo all'interno del ramo:
if bob.email then
print(`email: {bob.email}`) -- qui email è una stringa
else
print("no email on file")
endFacoltativo significa «può essere assente». Non significa «di qualsiasi tipo». Se email esiste, deve comunque essere una stringa.
Sfida
FacileCrea un alias di tipo chiamato User con:
namedi tipostring(obbligatorio)emaildi tipostring?(facoltativo)
Crea due utenti:
alice: nome"Alice", email"alice@luau.dev"bob: nome"Bob", senza email
Crea una funzione printContact che accetta un User. Se l'utente ha un'email, stampa [name] - [email]; altrimenti stampa [name] - no email.
Poi:
- chiama
printContact(alice) - chiama
printContact(bob) - stampa il risultato del confronto
bob.email == nil
Provalo tu
-- Scrivi il codice qui
-- 1) definisci il tipo User con un campo email opzionale
-- 2) crea alice (con email) e bob (senza)
-- 3) scrivi printContact con un controllo su nil
-- 4) chiama printContact per entrambi gli utenti, poi stampa bob.email == nil
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 tipi3Tabelle 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 mappe6Tipizzare le forme delle tabelle
Annotazioni inline delle formeAlias di tipo per le formeProprietà opzionaliForme e tabelle libere a confrontoEstendere le formeAggiungere metodi alle formeSelf e metodi con i due puntiRiepilogo: definire le forme delle tabelleEsercitati da solo: Compilatore Luau online