Parametri opzionali
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 25 di 73.
In Lua semplice potevi sempre omettere gli argomenti: quelli mancanti diventavano silenziosamente nil, e dimenticarsi di gestire questa situazione era una classica fonte di bug. Luau rende esplicita questa possibilità: aggiungi ? al tipo di un parametro per contrassegnarlo come facoltativo.
function greet(name: string, title: string?): string
if title then
return `{title} {name}`
end
return `Hello, {name}`
end
print(greet("Ada")) -- Hello, Ada
print(greet("Ada", "Dr.")) -- Dr. Adastring? si legge come "string o nil". Chi chiama la funzione può passare una stringa oppure omettere del tutto l'argomento; i parametri senza ? sono obbligatori e il controllo dei tipi segnala le chiamate in cui vengono omessi.
All'interno della funzione, un parametro facoltativo potrebbe essere nil, quindi controllalo prima di usarlo: if title then ... end è lo schema standard. Salta il controllo e concatena nil a una stringa, e otterrai lo stesso errore di runtime che Lua ha sempre generato; il controllo dei tipi ti avvisa prima.
Sfida
FacileCrea una funzione chiamata createUserProfile che accetta username: string (obbligatorio) e displayName: string? (facoltativo) e restituisce una string:
- Quando sono forniti entrambi, restituisci:
"Profile: [displayName] (@[username])" - Quando è fornito solo il nome utente, restituisci:
"Profile: @[username]"
Crea una funzione chiamata calculateDiscount che accetta price: number (obbligatorio) e membershipLevel: string? (facoltativo) e restituisce un number:
- Quando è fornito un livello di iscrizione, restituisci il prezzo ridotto del 10% (moltiplicalo per
0.9) - Altrimenti, restituisci il prezzo invariato
Chiama e stampa, ciascuno su una riga separata:
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")calculateDiscount(75)
Provalo tu
-- Scrivi il codice qui
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- poi stampa i quattro risultati
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 mappeEsercitati da solo: Compilatore Luau online