Pagina 1 di 2

Lua

MessaggioInviato: 12 feb 2023, 19:48
da gekofive
Qualcuno di voi conosce questo linguaggio?
Avete scritto qualcosa più di "Hello world"?

Re: Lua

MessaggioInviato: 12 feb 2023, 20:19
da ThEnGi
Solo su Minecraft e poco più di un programma per la "Turtle" :mrgreen:
A memoria è tipo il C

O_/

Re: Lua

MessaggioInviato: 12 feb 2023, 20:48
da gekofive
Si, è una specie di C interpretato.

Forse mi puoi aiutare, volevo una conferma su un comportamento strano che trovo solo in questo linguaggio.
Prendi questo codice

Codice: Seleziona tutto
for c = 1, 10 do
   io.write(c, "\n")
   if c == 3 then
      c = 7
   end
end

Mi aspetto che il loop salti un ciclo, ma invece la variabile c che era stata modificata, viene ripristinata all'inizio del nuovo ciclo e il loop fa comunque tutti 10 i cicli. tutti gli altri linguaggi che conosco non si comportano in questo modo e mi pare strano. Volevo sapere se qualcunaltro lo aveva notato.

Re: Lua

MessaggioInviato: 12 feb 2023, 21:20
da elfo
Third, you should never change the value of the control variable: The effect of such changes is unpredictable.

In fondo a questa pagina:

https://www.lua.org/pil/4.3.4.html

Re: Lua

MessaggioInviato: 12 feb 2023, 21:40
da gekofive
Grazie Elfo per il link a quella pagina. Nel testo che sto seguendo non è scritto nulla al riguardo. Comunque è una brutta cosa questa restrizione.

Re: Lua

MessaggioInviato: 12 feb 2023, 22:04
da GioArca67
gekofive ha scritto:Mi aspetto che il loop salti un ciclo, ...

E già qui c'è qualcosa che non va se pensavi che da 3 a 7 sia un solo ciclo...

Re: Lua

MessaggioInviato: 12 feb 2023, 22:53
da gekofive
GioArca67 ha scritto:E già qui c'è qualcosa che non va

E' un refuso, intendevo quello che c'è scritto nel programma, (4 cicli).
Dato che hai scritto già, cosa altro c'è che non va?

Re: Lua

MessaggioInviato: 12 feb 2023, 23:21
da IlGuru
Forse assegna c come una variabile locale interna alla funzione if.
Bisognerebbe provare a stampare c dopo l'assegnazione e vedere se stampa il valore 3 o 7

Re: Lua

MessaggioInviato: 12 feb 2023, 23:23
da GioArca67
Quello che hanno già scritto prima.
Perché devi fare quella cosa singolare?
Non puoi gestire con una if?

EDIT: Oppure una while al posto del for

Re: Lua

MessaggioInviato: 12 feb 2023, 23:24
da GioArca67
IlGuru ha scritto:Bisognerebbe provare a stampare c dopo l'assegnazione e vedere se stampa il valore 3 o 7

Dopo l'if

EDIT: le variabili non dichiarate sono globali, per le locali si una local, il for automaticamente dichiara la variabile del ciclo come locale, quindi all'uscita non la vedi più.