有没有办法告诉`next`从特定键开始?

时间:2015-08-28 21:11:18

标签: lua iterator next lua-table

我的理解是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

每次运行代码时都会得到不同的结果。因此,指定一个起始键有效,遗憾的是效果似乎有点随机。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

每次运行遍历Lua表的程序时,顺序都会不同,因为Lua内部在哈希表中使用随机盐。

这是在Lua 5.2中引入的。见luai_makeseed

答案 1 :(得分:2)

来自lua documentation

  

未指定枚举索引的顺序,偶数   对于数字索引。 (要按数字顺序遍历table,请使用   数字for。)