Loops Lua:表的意外迭代结果
我在Lua中使用了一个简单的“isPrime”函数,忽略了与此查询无关的实际“isPrime”函数,编写了以下代码: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,但奇怪的是,它们从未打印出来 有人能解释为什么会这
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
时停止。不同的是长度运算符#
。啊,你说得很对-谢谢你的更正!我在想接线员。这意味着我的评论根本没有添加任何有用的内容,所以我删除了它。