Lua:使用Table时遇到了意外的迭代结果

我在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()函数迭代和访问它的键。

点赞
用户33252
用户33252

ipairs(t) 将遍历键值对 (1,t[1]), (2,t[2]), ... 直到遇到第一个 nil 值。这不是你想要的。只需使用你的第一个循环的样式即可。

for i = -10,20 do
    print(i, out[i])
end
2017-05-18 02:51:03