2012-12-18 2 views
7

Sto giocando un po 'con Lua.Incremento a Lua

mi sono imbattuto nel seguente frammento di codice che hanno un comportamento imprevisto:

a = 3; 
b = 5; 
c = a-- * b++; // some computation 
print(a, b, c); 

Lua gestisce il programma senza alcun errore, ma non stampa 2 6 15 come previsto. Perché ?

+2

come si fa a funzionare? Prendo '3 5 3' come previsto (come - inizia un commento) usando Lua 5.1.4. –

risposta

6

LUA non di incremento e decremento con ++ e --. -- inizierà invece un commento.

+0

Vero, ma questo non spiega il motivo per cui il programma viene compilato ed eseguito. – prapin

+0

Si compila ed esegue perché a LUA non importa il punto e virgola mancante alla fine delle righe. Sarà appena stampato 3 5 3. – annih

+2

@annih Ha senso il motivo per cui questo codice viene compilato, come detto in questa risposta - inizia un commento, quindi il tuo codice è essenzialmente: 'a = 3; b = 5; c = a; 'Nota che; è necessario in cima alla mia testa se lo fai tutto in una riga, come faccio io – engineercoding

1

Questo darà

perché terza linea sarà valutata come c = a

perché? perché in lua, i commenti iniziano con -. Pertanto c = a-- * b ++; // qualche calcolo

viene valutato come due parti;

  1. espressione: c = a
  2. commento: * b ++; //// qualche calcolo
2

Se si desidera 2 6 15 come l'uscita, provare questo codice:

a = 3 
b = 5 
c = a * b 
a = a - 1 
b = b + 1 
print(a, b, c)