我正在尝试在lua中循环表,但是表循环顺序是错误的。下面的代码将打印:
代码是:
testNumbers =
{
one = 1,
two = 2,
three = 3
}
for key,num in pairs(testNumbers) do
print("key : " .. key .. " num: " .. num)
end
如何使它以正确的顺序循环?我不能更改太多代码,因为现在需要key变量
答案 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