先給乙個「數值」的for例子,通過該例子,理解數值for的執行過程
for i = 1 , 10 , 1 do
print(i)
end
迴圈變數為i,
表示式1:i = 1
表示式2:10 --雖說是乙個數字,但在lua中也是乙個表示式
表示式3:1 --也是乙個表示式
迴圈體:do與end之間的內容,這裡是print(i)
執行過程:
先取表示式1(即i=1),該表示式只被執行一次
再取表示式3的符號,如果表示式3的符號為正,那麼表示式2就作為for迴圈的上界,如果表示式3位負,那麼表示式2就作為for迴圈的下界
再將迴圈變數i的值與表示式2進行比較,比較規則為:
如果表示式3為正,那麼判斷迴圈變數 i 的值是否小於等於表示式2,如果為真,執行迴圈體,然後將迴圈變數 i 加上表示式3,如果為假,for迴圈結束
如果表示式3為負,那麼判斷迴圈變數 i 的值是否大於表示式2,如果為真,執行迴圈體,然後將迴圈變數 i 加上表示式3,如果為假,for迴圈結束
所以,上面for迴圈結束後,i 的值為10
如果將上面的表示式改為如下,那麼該for迴圈會是乙個死迴圈
for i = 10 , 10 , 0 do
print(i)
end
LUA中各種迴圈
1 while迴圈 while true do end2 for的多種迴圈 數值for迴圈 for 起始值,上限,step do for i 1,5,1 do print i end 泛型for迴圈,迭代陣列 迭代陣列中每個鍵值,in後面跟的是迭代器,可以自定義迭代器ipairs pairs都內建的...
Lua中數字for迴圈例項
看以下 複製 如下 for i 1,2 do print i i 3 end 輸出是什麼?如果習慣了c c 語言,會覺得因為改變了控制變數i為3,所以在執行第二次迴圈體之前判斷不通過,所以輸出是1。但結果輸出是1和2,即雖然改變了i,但迴圈還是執行了2次。這是為什麼呢?看了lua的源 發現在語法分析...
Lua中數字for迴圈例項
看以下 複製 如下 for i 1,2 do print 程式設計客棧i i 3 end 程式設計客棧 輸出是什麼?如果習慣了c c 語言,會覺得因為改變了控制變數i為3,所以在執行第二次迴圈體之前判斷不通過,所以輸出是1。但結果輸出是1和2,即雖然改變了i,但迴圈還是執行了2次。這是為什麼呢?看了...