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

Aub*_*e18 2 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
Run Code Online (Sandbox Code Playgroud)

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

lhf*_*lhf 5

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

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

  • @Aubergine18,以避免在处理哈希表中的冲突时利用二次或更差行为的攻击。 (2认同)