第一版是針對 Lua 5.0 編寫的。雖然在很大程度上仍然適用於後續版本,但仍有一些差異。
第四版針對 Lua 5.3,可在 Amazon 和其他書店購買。
購買這本書,您也協助 支持 Lua 專案


4.3.4 – 數值 for

for 陳述式有兩個變體:數值 for一般 for

數值 for 的語法如下

    for var=exp1,exp2,exp3 do
      something
    end
此迴圈會針對 varexp1exp2 的每個值執行 something,並使用 exp3 作為遞增 var步長。第三個運算式是選用的;如果沒有,Lua 會假設步長值為一。以下是一些此類迴圈的典型範例
    for i=1,f(x) do print(i) end
    
    for i=10,1,-1 do print(i) end

for 迴圈有一些細微差別,您應該學習這些差別才能善加利用它。首先,所有三個運算式會在迴圈開始前評估一次。例如,在第一個範例中,f(x) 只會呼叫一次。其次,控制變數是由 for 陳述式自動宣告的局部變數,而且只會在迴圈內部可見。一個常見的錯誤是假設迴圈結束後變數仍然存在

    for i=1,10 do print(i) end
    max = i      -- probably wrong! `i' here is global
如果您需要在迴圈後取得控制變數的值(通常是在中斷迴圈時),您必須將此值儲存到另一個變數中
    -- find a value in a list
    local found = nil
    for i=1,a.n do
      if a[i] == value then
        found = i      -- save value of `i'
        break
      end
    end
    print(found)
第三,您絕不應該變更控制變數的值:此類變更的效果是不可預測的。如果您想要在正常終止前中斷 for 迴圈,請使用 break