Lua/Funzioni

Wikibooks, manuali e libri di testo liberi.
< Lua
Jump to navigation Jump to search

Le funzioni[modifica]

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]

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]

Una funzione può non avere un nome.

Closures[modifica]

Aspetti dell'implementazione[modifica]

Tecnicamente, Lua trasforma ogni dichiarazione del tipo

function f()
    ...
end

nel formato

f = function() ... end

Bibliografia[modifica]