【发布时间】:2017-07-07 09:47:47
【问题描述】:
我无法理解这个工作的 Lua 片段。
这个:
t = {'a', 'b', 'c'}
for k, v in next, t, nil do
print(k, v)
end
返回这个:
1 a
2 b
3 c
谁能解释一下,
-
next如何获取t作为其参数? -
t如何成为for的有效to参数 - 以及为什么需要
nil并将其作为有效步骤接受?
【问题讨论】:
-
接下来是 k (左边的数字索引)和 v 得到 t[k] (右边的值),其余的不知道
-
Lua 在执行generic "for" loop 时将
t作为next的参数提供。这与数字“for”循环不同。 -
是的,现在我明白了。这不是一个数字,而是一个泛型。
in next, t, nil部分被评估为next(t, nil)现在突然变得有意义了......谢谢 Egor。 -
你也可以完全忽略 nil:
for k, v in next, t do print(k, v) end