il linguaggio Lua: settima parte
segue dalla sesta parte Iteratori e lua funzionale Cos’è un iteratore? Informaticamente parlando, è un costrutto che ci permette di scorrere strutture dati come liste, array, elenchi. In pratica, dato un elemento della struttura il compito dell’iteratore è farci avere il prossimo su cui operare. Non ci stupirà apprendere che in Lua gli iteratori sono funzioni. Vediamo un semplice esempio: function reverse_iter(t) local i=#t+1 return function() i=i-1 if i>=0 then return t[i] end end end reverse_iter è una fabbrica (factory) di funzioni: ogni volta che la chiamiamo, ci crea una nuova closure, ossia l’iteratore specifico per l’array che gli passiamo. La funzione che otteniamo mantiene il suo stato grazie alle variabili i e t ; quando non ci sono più elementi, restituisce nil. L’iteratore si potrebbe usare così: ...