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如何通过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/

相关文章:

lua - 在 Lua-Resty (openresty) 中跨请求共享 LUA 变量

PHP MYSQL 横向循环

javascript - Kendo Grid.dataItem 循环不工作

c++ - Lua 变量作用域、函数前向声明和使用 'require' 语句重构 Lua 脚本

c++ - 使用 LuaBridge 将 LuaJIT 绑定(bind)到 C++ 导致 "PANIC: unprotected error"

c++ - 如何在 C++ 中读取 dicom 像素

c++ - C++ STD::List:遍历列表的麻烦

javascript - 使用 for 循环遍历数组和 console.log 中的对象,看是否看过电影

java - 创建一个显示 0-101 并将其数字之和分别存储到该索引中的数组循环

lua - 32 位 Lua 字节码可以在 64 位系统上工作吗?