Loops Lua:表的意外迭代结果

Loops Lua:表的意外迭代结果,loops,lua,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中使用了一个简单的“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()函数迭代和访问其键。

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

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

@JackTaylor我认为(如果我RTFM正确的话)
ipairs
总是在第一个
nil
时停止。不同的是长度运算符
#
。啊,你说得很对-谢谢你的更正!我在想接线员。这意味着我的评论根本没有添加任何有用的内容,所以我删除了它。