Menu
Coddy logo textTech

Tipizzare le funzioni anonime

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 23 di 73.

In Lua, le funzioni sono valori: le hai memorizzate in variabili e le hai passate in giro: local f = function(x) return x * 2 end. Queste funzioni anonime (espressioni di funzione) accettano annotazioni di tipo proprio come le funzioni con nome:

local double = function(x: number): number
    return x * 2
end

local shout = function(text: string): string
    return string.upper(text) .. "!"
end

I parametri ricevono name: type tra parentesi e il tipo restituito segue la parentesi chiusa: l'unica differenza rispetto a una funzione con nome è che la parola chiave function non ha un nome e l'intera espressione viene assegnata a una variabile.

Se conosci JavaScript o TypeScript, nota che Luau non ha funzioni freccia. Non esiste la sintassi =>. Ogni espressione di funzione si scrive con function ... end, in forma lunga o breve.

Una volta assegnata, la richiami tramite la variabile come qualsiasi funzione: double(21) restituisce 42 e il verificatore controlla ogni chiamata in base alle annotazioni che hai scritto.

challenge icon

Sfida

Facile

Riscrivi questa funzione con nome come funzione anonima memorizzata in una variabile locale, mantenendo tutte le annotazioni di tipo:

function subtract(a: number, b: number): number
    return a - b
end

Quindi: crea local subtract = function(...) ... end con gli stessi tipi dei parametri e del valore restituito.

Poi crea altre due funzioni anonime tipizzate:

  • createMessage: accetta text: string, restituisce la stringa "Message: [text]" (tipo restituito string)
  • isPositive: accetta num: number, restituisce true se il numero è maggiore di 0, altrimenti false (tipo restituito boolean)

Chiama e stampa, ciascuno su una riga:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. isPositive(8)

Provalo tu

-- Scrivi il codice qui
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- poi stampa i quattro risultati
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online