Lua/Funzioni
< Lua
Le funzioni
modificaPer 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
modificaLa 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
modificaUna funzione può non avere un nome.
Closures
modificaAspetti dell'implementazione
modificaTecnicamente, Lua trasforma ogni dichiarazione del tipo
function f() ... end
nel formato
f = function() ... end