Lua 的通用 for 循环中 L3 变量的作用是什么?

我刚接触 Lua,请问关于所谓的通用 for 循环,我不明白 L3 的作用是什么:

local L0 = {69, 145, 3, 70, 73, 30, 35}
local L1, L2, L3 = nil, nil, nil

for L1, L2 in L0, L3 do
print("Something")

end

L3 变量在表格中的作用是什么?

点赞
用户2858170
用户2858170

请参考 Lua 手册

通用的 for 循环具有以下语法:

stat ::= for namelist in explist do block end
  namelist ::= Name {‘,’ Name}

循环从计算 explist 开始,以产生四个值:迭代器函数、状态、控制变量的初始值和终止值。

因此,在您的情况下:

for L1, L2 in L0, L3 do
  print("Something")
end

L0 应该是迭代器函数,并且 Lua 会尝试调用它。由于 L0 是一个表的值,所以您面临尝试调用表值的错误。即使 L0 是迭代器函数,您仍然缺少两个值。实际上,由于 L3 为 nil,您缺少 3 个值。您可以看到,这个代码没有太多意义。

大多数通用的 for 循环都是使用 ipairspairs,如下所示:

for k,v in pairs(sometable) do
 --block
end

或者

for i,v in ipairs(someTable) do
-- block
end

我不知道您在哪里找到这个代码,但我建议您寻找其他学习 Lua 的资源。

http://www.lua.org 是一个很好的起点。手册和《编程 Lua》的免费电子书都是绝佳的资源。

2021-03-12 14:18:31