2016-01-11 11 views
5

Nei linguaggi di programmazione come C è possibile creare un blocco di codice anonimo per limitare l'ambito delle variabili all'interno del blocco, lo stesso può essere fatto con Lua?Puoi creare blocchi di codice anonimi in Lua?

Se sì quale sarebbe l'equivalente Lua del seguente codice C?

void function() 
{ 
    { 
     int i = 0; 
     i = i + 1; 
    } 

    { 
     int i = 10; 
     i = i + 1; 
    } 
} 
+1

In Lua, tutti i blocchi sono anonimi, comunque. La sintassi zuccherina di alcune [definizioni di funzione] (http://www.lua.org/manual/5.3/manual.html#3.4.11) sono solo modi stilistici per combinare una definizione di funzione con un compito. –

risposta

6

Si desidera utilizzare do...end. Dalla manual:

Un blocco può essere esplicitamente delimitato per produrre una singola istruzione:

stat ::= do block end 

blocchi espliciti sono utili per controllare la portata di dichiarazioni di variabili. blocchi espliciti vengono utilizzati anche per aggiungere una dichiarazione return o break nel bel mezzo di un altro blocco

function fn() 
    do 
     local i = 0 
     i = i + 1 
    end 
    do 
     local i = 10 
     i = i + 1 
    end 
end 
5

È possibile delimitare un blocco con parola chiave do & end.

Riferimento: Programming in Lua

0

Esecuzione di una funzione anonima avviene come segue: (function(a,b) print(a+b) end)(1,4)

emette 5.

Problemi correlati