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) .. "!"
endI 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.
Sfida
FacileRiscrivi 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
endQuindi: crea local subtract = function(...) ... end con gli stessi tipi dei parametri e del valore restituito.
Poi crea altre due funzioni anonime tipizzate:
createMessage: accettatext: string, restituisce la stringa"Message: [text]"(tipo restituitostring)isPositive: accettanum: number, restituiscetruese il numero è maggiore di 0, altrimentifalse(tipo restituitoboolean)
Chiama e stampa, ciascuno su una riga:
subtract(10, 3)createMessage("Hello World")isPositive(-5)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
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