Lua - 按插入顺序打印表键

house = {
         ["Street 22"] = {
                           {name = "George", age = 20},
                           {name = "Pete", age = 25}
                         },
         ["Street 30"] = {
                           {name = "John", age = 32},
                         }
       }

我想要按照插入的确切顺序打印 houses 表的键/街道名称。如果我使用:

for i, v in pairs(house) do
    print(i)
end

它会将它们打印出来,但顺序似乎有点随机...如何按照它们插入的顺序打印它们?

点赞
用户107090
用户107090

Lua 的表是由键值对组成的集合。它没有顺序。

手册上写道:

即使是数字索引,枚举索引的顺序也没有指定。

2017-01-01 18:55:59
用户234175
用户234175

正如lhf的回答所述,您无法仅使用表的关联部分来实现此操作。但是,如果您使用表的数组索引部分维护插入顺序,则可以这样做。例如。

table.insert(house, "Street 22")
local street = house[#house]
house[street] = { {name = "George", age = 20},
                  {name = "Pete", age = 25} }

table.insert(house, "Street 30")
street = house[#house]
house[street] = { {name = "John", age = 32} }

之后,您可以使用“ipairs”将其打印出来。

for _, v in ipairs(house) do
  print(v)
end
2017-01-02 09:49:35