Lua中數字for迴圈例項

2022-09-21 02:21:09 字數 558 閱讀 1906

看以下**:

複製** **如下:

for i=1,2 do 

print(程式設計客棧i) 

i=3 

end 程式設計客棧;

輸出是什麼?如果習慣了c/c++語言,會覺得因為改變了控制變數i為3,所以在執行第二次迴圈體之前判斷不通過,所以輸出是1。

但結果輸出是1和2,即雖然改變了i,但迴圈還是執行了2次。這是為什麼呢?

看了lua的源**,發現在語法分析階段,表示式中的i(也叫控制變數)和迴圈體中的i並不是乙個值,其實表示式中的i叫internal index,迴圈體中的i叫external index。

所以在迴圈體中並沒有改變表示式中的i的值。

至於為什麼lua要這樣做,估計是為了安全吧,怕在迴圈體中不經意地改變了表示式的i,從而產生bug。

另外,在progammming in lua一書中也提到不要在迴圈體內修改控制變數(實際修改的是external index)的值,否則會有不可預知的結果。

本文標題: lua中數字for迴圈例項

本文位址: /jiaoben/lua/123339.html

Lua中數字for迴圈例項

看以下 複製 如下 for i 1,2 do print i i 3 end 輸出是什麼?如果習慣了c c 語言,會覺得因為改變了控制變數i為3,所以在執行第二次迴圈體之前判斷不通過,所以輸出是1。但結果輸出是1和2,即雖然改變了i,但迴圈還是執行了2次。這是為什麼呢?看了lua的源 發現在語法分析...

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例子,通過該例子,理解數值for的執行過程 for i 1 10 1 do print i end 迴圈變數為i,表示式1 i 1 表示式2 10 雖說是乙個數字,但在lua中也是乙個表示式 表示式3 1 也是乙個表示式 迴圈體 do與end之間的內容,這裡是print i ...