考虑以下 Lua 表格:
foo = {
bar1 = {a = 1, b = 2, c = "hello"},
bar2 = {a = 5, b = 2, c = "bbq"},
bar3 = {a = 76, b = 13, c = "pwnd"}
}
我正在尝试使用lua C API迭代此表以检索键名bar1、bar2和bar3。我使用了lua_next(L, -2)
函数进行迭代,如许多人建议的那样,但问题是它返回的元素顺序是随机的。每次运行时顺序都会改变。
我使用以下代码:
for( lua_pushnil(L); lua_next(L, -2) != 0; lua_pop(L, 1) )
{
printf("%s\n", lua_tostring(L, -2));
}
大多数情况下,输出是无序的,例如
bar2 bar1 bar3
。有时会有幸运的顺序。是否有一种简单的方法以有序方式循环表键?如果我使用有序的等效代码是什么?谢谢!编辑:我知道我正在使用映射而不是数组。但在lua脚本中,我们有ipairs可以很好地解决这个问题。我正在寻找C API等效物。我已经找到了这个stackoverflow答案,它给出了一个不同的答案,但对我来说不起作用,所以我想知道那个答案是否好或相关。