Funzioni come valori di prima classe
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 12 di 54.
In Lua, le funzioni sono più di semplici blocchi di codice che eseguono attività. Sono valori che possono essere trattati come qualsiasi altro tipo di dato. Questo significa che puoi lavorare con le funzioni allo stesso modo in cui lavori con numeri, stringhe o tabelle.
Puoi memorizzare una funzione in una variabile:
local greet = function()
print("Hello!")
end
greet() -- Output: Hello!Qui, la funzione viene assegnata alla variabile greet e puoi chiamarla proprio come qualsiasi altra funzione. Questo apre possibilità interessanti per strutturare il tuo codice.
Le funzioni possono anche essere passate come argomenti ad altre funzioni. Questo è particolarmente utile quando vuoi che una funzione utilizzi il comportamento definito in un’altra:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- Output: Hello from a function!In questo esempio, executeAction riceve una funzione come parametro e la chiama. La funzione sayHello viene passata proprio come passeresti un numero o una stringa.
Le funzioni possono persino restituire altre funzioni. Questo ti permette di creare funzioni dinamicamente in base a determinate condizioni o parametri:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Output: 10Sfida
FacileScrivi una funzione applyOperation che accetta a, b e operation e restituisce il risultato dell'applicazione della funzione operation ai due numeri.
Il parametro operation è una tabella che contiene una funzione che verrà chiamata con a e b come argomenti.
Logica:
- Estrai la funzione dalla tabella
operationusando la chiave"func" - Chiama quella funzione con
aebcome argomenti - Restituisci il risultato
Parametri:
a(numero): Primo numerob(numero): Secondo numerooperation(tabella): Una tabella che contiene una funzione memorizzata nella chiave"func"
Restituisce: Il risultato della chiamata alla funzione operation con a e b (numero)
Provalo tu
function applyOperation(a, b, operation)
-- Write code here
end
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Iterazione avanzata delle tabelle
Iterare con pairs()Iterare con ipairs()pairs() vs. ipairs()Riepilogo - Scheda del personaggio2Altre funzioni della libreria table
table.concat()Costruzione di tabelle e unpack()table.sort()Ordinamento personalizzato con funzioniRiepilogo - Tabellone dei punteggi più alti3Concetti avanzati sulle funzioni
Restituire più valoriFunzioni variadiche (...)Funzioni come valori di prima classeFunzioni anonimeChe cos'è una closure?Riepilogo - Gestore di eventi sempliceEsercitati da solo: Compilatore Lua online