lua關於for迴圈不能改變控制變數

2021-08-03 22:55:44 字數 730 閱讀 1275

學習lua兩天,發覺和以前學習c、c++的感覺差別有點大。。。

for i = 1, 5 do

print(i)

if i == 2 then

i = i+1

endend

執行發現沒有起作用:

123

45

在lua程式設計裡面說:

迴圈過程中不要改變控制變數的值,那樣做的結果是不可預知的。如果要退出迴圈,使用break語句。

看來控制變數的i和迴圈體的i不是同乙個值

看了手冊,感覺可以用範圍for和迭代器完成這個任務:

local v = 1

for value in function()

print(v)

if v == 2 then

v = v + 2

else

v = v + 1

endreturn v

enddo if value > 5 then

break

endend

執行發現符合預期想法:

124

5

完成這個需求就要用到閉包,感覺有點蛋疼,但從這裡面也能感到這個lua的函式作為變數的一種有點強

迴圈陣列改變結構(橫向變縱向)

方法一 tbodyarr 150,73,20,140,90,40,newarr con newarr最終結果,con中間變數 for var m 0 m tbodyarr 0 length m newarr.push con console.log newarr 方法二 var alldataarr...

Lua學習筆記 day2 Lua迴圈 流程控制

一 lua迴圈 lua提供以下幾種迴圈方式 while 首先判斷終止條件為true時,然後再執行迴圈體語句 for 迴圈體執行的次數在for中指定 repeat.until 首先執行迴圈體,然後判斷終止條件,終止條件為true時,迴圈退出 迴圈巢狀 迴圈控制語句 break 退出當前迴圈或語句 wh...

Lua筆記2 變數 迴圈和流程控制

變數使用前必須宣告,lua的變數預設全域性的,哪怕該變數在函式中。區域性變數使用local進行宣告,僅在作用域中有效。函式中宣告的變數,在函式呼叫前是不會起作用的。示例 function foo n a 3 n local b 5 n endprint a print b foo 10 print ...