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

问题描述 投票:2回答:2

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

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

lua iterator next lua-table
2个回答
5
投票

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

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


2
投票

来自lua documentation

未指定索引的枚举顺序,即使对于数字索引也是如此。 (要以数字顺序遍历table,请使用数字for。)

© www.soinside.com 2019 - 2024. All rights reserved.