第一版是为 Lua 5.0 编写的。虽然对于后续版本来说仍然非常相关,但有一些差异。
第四版针对 Lua 5.3,可在 Amazon 和其他书店购买。
购买本书,您还可以帮助支持 Lua 项目


4.3.4 – 数字 for

for 语句有两种变体:数字 for通用 for

数字 for 具有以下语法

    for var=exp1,exp2,exp3 do
      something
    end
该循环将针对 var 的每个值从 exp1exp2 执行 something,使用 exp3 作为增量 var步长。第三个表达式是可选的;当不存在时,Lua 将 1 作为步长值。作为此类循环的典型示例,我们有
    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