我正在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()函数迭代并访问它的键。
答案 0 :(得分:4)
ipairs(t)
会迭代键值对(1,t[1]), (2,t[2]), ...
,直到第一个nil
值。这不是你想要的。只需使用第一个循环的样式
for i = -10,20 do
print(i, out[i])
end