Lua:表的意外迭代结果

时间:2017-05-18 02:42:16

标签: loops lua

我正在Lua玩一个简单的“isPrime'我所做的功能,而忽略了实际的' isPrime'与此查询无关的函数编写了以下代码:

out = {}
for i = -10,20 do
    out[i] = isPrime(i)
end

for k,v in ipairs(out) do
    print(k,v)
end

我的期望是该程序会打印每一个键及其各自的值-10到20,但相反只打印了1到20。我发现,在专门检查这些键值对之后,表中有-10到0,但奇怪的是,它们从未被打印过。

任何人都可以解释为什么会这样吗?我觉得我不完全理解Lua如何通过ipairs()函数迭代并访问它的键。

1 个答案:

答案 0 :(得分:4)

ipairs(t)会迭代键值对(1,t[1]), (2,t[2]), ...,直到第一个nil值。这不是你想要的。只需使用第一个循环的样式

for i = -10,20 do
    print(i, out[i])
end