2017-01-01 121 views
2
house = { 
     ["Street 22"] = { 
          {name = "George", age = 20}, 
          {name = "Pete", age = 25} 
         }, 
     ["Street 30"] = { 
          {name = "John", age = 32}, 
         } 
     } 

我想按照它们的确切顺序打印房屋表的键/街道。如果我使用:Lua - 按插入顺序打印表键

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

这将打印它们,但顺序似乎有点随机......我怎样才能打印它们,以便他们插入?

+0

创建与街道名称的数组,遍历它ipairs,然后做一个查找。 – warspyking

回答

1

正如已经说过的答案,您将无法仅使用表的关联映射部分来完成此操作。但是,如果您使用表格的数组索引部分维护广告订单,则可以这样做。例如。

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 
2

Lua表是一组键值对。没有订单。

manual说:

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