Lua
Da Wikipedia, l'enciclopedia libera.
LUA è un linguaggio di programmazione dinamico, riflessivo, imperativo e procedurale, utilizzato come linguaggio di scripting di uso generico.
[modifica] Caratteristiche del linguaggio
Le caratteristiche principali di LUA sono le funzioni, viste come "oggetti" di primo livello e quindi assegnabili a variabili, e l'uso di tabelle come strutture dati generiche. Queste caratteristiche permettono al linguaggio di implementare caratteristiche viste in linguaggi orientati agli oggetti senza che lo stesso lo sia.
[modifica] Esempi
Il classico programma "Hello world" può essere scritto come:
print "Hello, world!"
Il fattoriale è un esempio di funzione ricorsiva:
function factorial(n) if n == 0 then return 1 end return n * factorial(n - 1) end
Questo esempio mostra come sia possibile, in LUA, ridefinire le funzioni del linguaggio:
do local oldprint = print -- salva la funzione come era definita da LUA -- ATTENZIONE: non salva il valore ritornato dalla funzione, ma la funzione stessa print = function(s) -- ridefinisce la funzione print if s == "foo" then oldprint("bar") else oldprint(s) end end end
Qualunque futura chiamata alla funzione print farà ora riferimento alla nuova funzione, e la vecchia funzione sarà accessibile dalla nuova versione della stessa.
Questo esempio mostra una caratteristica di LUA: la possibilità di definire dinamicamente tabelle (la struttura dati usata dal linguaggio). In questo caso si tratta di una tabella che associa al valore fibs[n] l'ennesimo numero di Fibonacci.
fibs = { 1, 1 } -- valore iniziale per fibs[1] and fibs[2] setmetatable(fibs, { __index = function(fibs,n) -- chiama questa funzione se il valore fibs[n] non esiste fibs[n] = fibs[n-2] + fibs[n-1] -- calcola e memorizza il valore return fibs[n] end })