2012-02-18 29 views
-1

我正在用lua编写一个程序。我有一个通过以下方式组织的数据:如何访问这样的表中的数据?

t= { 
    i1 = { 
     p1 = { value = "i1p1" }, 
     p2 = { value = "i1p2" }, 
     -- etc 
     pm = { value = "i1pm" } 
    }, 
    i2 = { 
     p1 = { value = "i2p1" }, 
     p2 = { value = "i2p2" }, 
     -- etc 
     pm = { value = "i2pm" } 
    }, 
    im = { 
     p1 = { value = "imp1" }, 
     p2 = { value = "imp2" }, 
     -- etc 
     pm = { value = "impm" } 
    } 
} --(inner tables) 

在另一种方式,每个组数据是由两个变量我& p索引的,我相信,数据保持准确,但我希望的方式来打印他们的表中的数据,因为我不会知道我和P的值来遍历它们,甚至数字ñ&任何人都知道如何做到这一点与卢阿?

+0

我无法理解您要求的内容。你能否重新组织你的问题以更清楚你想要做什么? – 2012-02-18 07:01:45

+1

我用快捷方式'f {} == f({})'看到很多函数调用......你可以试着让你的示例代码正确,并且格式正确。 – jpjacobs 2012-02-18 09:17:59

回答

1

如果你知道你的嵌套(内部)表的深度,你可以明确地迭代,以该深度:

for k1,v1 in pairs(t) do 
    for k2,v2 in pairs(v1) do 
     for k3, v3 in pairs(v2) do 
      print(k3, ":", v3) 
     end 
    end 
end 

或者,您也可以递归遍历到您的嵌套结构:

function print_tbl(tbl) 
    if type(tbl) == "table" then 
     for _,v in pairs(tbl) do 
      print_tbl(v) 
     end 
    else 
     print(tbl) 
    end 
end 

print_tbl(t) 

这只是一个例子。如果你的表包含函数,包含userdata,或者你的嵌套有周期,你需要一个不同的方法。在Lua用户wiki上查看table serialization。序列化需要合理处理嵌套,函数,循环等表格。您可能能够使用您的数据学到的经验教训。