我在 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
关于loops - Lua:表的意外迭代结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44037731/