Menu
Coddy logo textTech

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: 10
challenge icon

Sfida

Facile

Scrivi 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 operation usando la chiave "func"
  • Chiama quella funzione con a e b come argomenti
  • Restituisci il risultato

Parametri:

  • a (numero): Primo numero
  • b (numero): Secondo numero
  • operation (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
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 Logica e flusso

Esercitati da solo: Compilatore Lua online