Valori predefiniti dei parametri
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 26 di 73.
I parametri opzionali ti lasciano un nil da gestire. Spesso quello che vuoi davvero è un valore di ripiego: "se chi chiama non ha specificato nulla, supponi X". Luau non ha una sintassi predefinita nella firma (non esiste greeting: string = "Hello"); invece, si usa la classica convenzione di Lua, ora con i tipi:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, Alice
print(greet("Alice", "Howdy")) -- Howdy, AliceIl parametro è contrassegnato come opzionale (string?) e la prima riga del corpo sostituisce nil con il valore predefinito. Funziona perché nil è falso: nil or "Hello" restituisce "Hello". Dopo quella riga, il controllo dei tipi sa che greeting non può più essere nil.
Una precisazione che conosci già da Lua: or sostituisce anche false! Per un parametro boolean?, flag = flag or true sovrascriverebbe silenziosamente un false esplicito. Usa invece un controllo esplicito di nil:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endSfida
FacileCrea una funzione chiamata calculateTax che accetta price: number (obbligatorio) e rate: number? con valore predefinito 0.05. Restituisci l’importo delle imposte (price * rate) come number.
Crea una funzione chiamata formatGreeting che accetta name: string (obbligatorio) e timeOfDay: string? con valore predefinito "Hello". Restituisci "[timeOfDay], [name]!" come string.
Crea una funzione chiamata calculateShipping che accetta weight: number, distance: number (entrambi obbligatori) e expedited: boolean? con valore predefinito false: per questo usa un controllo esplicito di nil! Calcola (weight * 0.5) + (distance * 0.1) e, se expedited è true, moltiplica il risultato per 2. Restituisci un number.
Chiama e stampa, ciascuno su una riga separata:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
Provalo tu
-- Scrivi il codice qui
-- calculateTax(price: number, rate: number?) -- valore predefinito di rate: 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- valore predefinito: "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- valore predefinito: false
-- poi stampa i sei 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