lua表错误循环顺序

时间:2019-10-07 17:22:29

标签: loops lua

我正在尝试在lua中循环表,但是表循环顺序是错误的。下面的代码将打印:

  • 键:三个数字:3
  • 键:一个数字:1
  • 键:两个数字:2

代码是:

  testNumbers =
  {
    one = 1,
    two = 2,
    three = 3
  }

for key,num in pairs(testNumbers) do 

print("key : " .. key .. " num: " .. num)

end

如何使它以正确的顺序循环?我不能更改太多代码,因为现在需要key变量

2 个答案:

答案 0 :(得分:4)

Lua中的表是键值对的,而不是序列。

遍历表将以未指定的顺序访问其对。参见manual

答案 1 :(得分:3)

为了提高效率,Lua表不跟踪其键的顺序。如果您无法更改表的格式,则仍然可以通过保留键数组并对其进行迭代来强制执行迭代顺序。

testNumbers =
  {
    one = 1,
    two = 2,
    three = 3
  }

local order = {'one', 'two', 'three'}

for _, key in ipairs(order) do
  print("key : " .. key .. " num: " .. testNumbers[key])
end