有没有一种方法可以告诉 `next` 从特定键开始?

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

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

点赞
用户1190388
用户1190388

从 Lua 的文档中(http://www.lua.org/manual/5.3/manual.html#pdf-next)获得以下信息:

枚举索引的顺序没有指定,即使是数字索引也不例外。(要按数字顺序遍历表,请使用数值类型的 for 循环。)

2015-08-28 21:16:46
用户107090
用户107090

每一次运行遍历 Lua 表格的程序,因为 Lua 内部在哈希表中使用了随机 salt,所以顺序都会不同。

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

2015-08-29 10:33:32