Lua/Funzioni
Aspetto
< Lua
Le funzioni
[modifica | modifica sorgente]Per definire una funzione, si scrive
function funzione() ... end
Esempio:
function fattoriale(n) if (n == 0) then return 1 end return n*fattoriale(n - 1) end print(fattoriale(4)) --scrive a video il numero 24
Valori di prima classe
[modifica | modifica sorgente]La seguente istruzione:
fatt = fattoriale
crea una variabile fatt
e le "assegna" la funzione definita sopra. Ora, fatt
può essere usato al posto di fattoriale
:
print fatt(4) --scrive a video il numero 24 calcolo = fatt --fa lo stesso con un'altra variabile
In gergo, si dice che le funzioni sono valori di prima classe (first-class values), perché possono essere manipolati esattamente come i valori numerici e le stringhe.
Funzioni anonime
[modifica | modifica sorgente]Una funzione può non avere un nome.
Closures
[modifica | modifica sorgente]Aspetti dell'implementazione
[modifica | modifica sorgente]Tecnicamente, Lua trasforma ogni dichiarazione del tipo
function f() ... end
nel formato
f = function() ... end