Funzioni variadiche
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 29 di 80.
Hai usato ... (argomenti variabili) di Lua per scrivere funzioni che accettano un numero qualsiasi di argomenti. Luau ti permette di tipizzare gli argomenti variabili, così ogni argomento passato viene controllato:
function sum(...: number): number
local total = 0
for _, n in ipairs({...}) do
total = total + n
end
return total
end
print(sum(1, 2)) -- 3
print(sum(1, 2, 3, 4, 5)) -- 15...: number dichiara che ogni argomento aggiuntivo deve essere un numero: sum(1, "two") genera un errore di tipo. Gli strumenti di runtime sono quelli che già conosci:
{...}raccoglie gli argomenti variabili in un array (qui un{number})select("#", ...)conta quanti argomenti sono stati passati...può essere passato direttamente a un'altra funzione, ad es.math.max(...)
Come in Lua, ... deve essere l'ultimo parametro: i parametri normali (tipizzati) vengono prima, mentre la parte variabile raccoglie il resto:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cSfida
FacileScrivi due funzioni che accettano un numero qualsiasi di argomenti.
- Scrivi
local function sumAll(...: number): numberche somma{...}usandoipairs. - Scrivi
local function joinWords(separator: string, ...: string): stringche restituiscetable.concat({...}, separator). - Stampa
sumAll(5, 10, 15)ejoinWords("-", "apple", "banana", "cherry").
Premi Esegui codice: l'output mostra 30 e apple-banana-cherry.
Provalo tu
-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) stampa i due risultati
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 parametri e valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriValori predefiniti per i booleaniFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate7Progetto: Gestore di attività tipizzato
Progetto: La struttura di un'attivitàFunzione per aggiungere un'attività2Tipi fondamentali
Numero, stringa e booleanoIl tipo 'any': una via di fugaIl tipo 'unknown'Tipi nil e opzionaliL’inferenza dei tipi in praticaAnnotazioni 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 forme misteLeggere una grigliaCreare una grigliatable.unpackRiepilogo: array e mappeEsercitati da solo: Compilatore Luau online