Menu
CoddyTech

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-c
challenge icon

Sfida

Facile

Scrivi due funzioni che accettano un numero qualsiasi di argomenti.

  1. Scrivi local function sumAll(...: number): number che somma {...} usando ipairs.
  2. Scrivi local function joinWords(separator: string, ...: string): string che restituisce table.concat({...}, separator).
  3. Stampa sumAll(5, 10, 15) e joinWords("-", "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

Esercitati da solo: Compilatore Luau online