我的理解是pairs(t)
只返回next, t, nil
。
如果我将其更改为next, t, someKey
(其中someKey
是我的表中的有效密钥),next
会从该密钥开始/之后开始吗?
我在Lua Demo页面上尝试过此操作:
t = { foo = "foo", bar = "bar", goo = "goo" }
for k,v in next, t, t.bar do
print(k);
end
每次运行代码时都会得到不同的结果。因此,指定一个起始键有效,遗憾的是效果似乎有点随机。有什么建议吗?
答案 0 :(得分:5)
每次运行遍历Lua表的程序时,顺序都会不同,因为Lua内部在哈希表中使用随机盐。
这是在Lua 5.2中引入的。见luai_makeseed。
答案 1 :(得分:2)
来自lua documentation:
未指定枚举索引的顺序,偶数 对于数字索引。 (要按数字顺序遍历
table
,请使用 数字for
。)