引用Lua 编程中的以下内容:19.3。
一个常见的错误是尝试对表的索引进行排序。在表中,索引形成一个集合,并且没有任何顺序。如果要对它们进行排序,则必须将它们复制到数组中,然后对数组进行排序。
如果您使用 遍历表pairs()
,则名称以任意顺序出现。但是,您不能直接对它们进行排序,因为这些名称是表的键。
解决方法也在同一页面上提到。
local tableVarName = {
STANDBY = {
timeout = "10",
mode = "0"
},
RTP = {
minport = "10000",
maxport = "10010"
}
}
function pairsByKeys (t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0 -- iterator variable
local iter = function () -- iterator function
i = i + 1
if a[i] == nil then return nil
else return a[i], t[a[i]]
end
end
return iter
end
for name, line in pairsByKeys(tableVarName) do
print(name, line)
end