2016-11-30 53 views
1

我是新来的Lua和想了解嵌套表如何阅读嵌套表

这是我一直在努力:

t = {}; 
t[1] = 22, {1, 22, 3}; 
t[2] = 44, {4, 5, 6}; 
t[3] = 66, {4, 5, 6}; 

for k, v in ipairs(t) do 
print(k,v) 
end 

这并不为我工作。 这是结果,我想: 例子:

1 2 5 
    2 5 66 
    3 6 33 
    4 2 1 
    5 4 12 
    6 4 3 
    7 2 44 
    8 3 1 
    9 2 44 
    10 3 99 


How do I read a nested table like this and 
how do I table.insert in the right column? 

回答

1

我相信误会就在于此代码:

t[1] = 22, {1, 22, 3}

第二个数值,逗号后的一个,{1, 22, 3}被分配什么也没有,它被扔在了乙醚里。

你的意思也许是什么表的表:

t[1] = {22, {1, 22, 3}}

这将在t是itself..a表 t[1][1] == 22 t[1][2] == {1, 22, 3}

然后遍历建立在[1]的项您可以使用此设置:

local t = {} t[1] = {22, {1, 22, 3}} t[2] = {44, {4, 5, 6}} t[3] = {66, {4, 5, 6}} for _,entry in ipairs(t) do local key = entry[1] io.write(key .. ' ') for _,value in ipairs(entry[2]) do io.write(value .. ' ') end io.write('\n') end

但说实话,我不确定你所要求的是什么,因为你的“预期产出”与你的样本数据集显着不同。

+0

感谢您的快速回答。我认为我的意思是它足够:t [1] = {22,3} t [2] = {44,6} t [3] = {66,63}如何在最简单可能的方式? – Qualmos

0

回复Qualmos'评论在payo的回答是:

local t = {} 
t[1] = {22,3} 
t[2] = {44,6} 
t[3] = {66,63} 

for _,v in pairs(table) do 
    print(_,v[1],v[2]) 
end 

将打印这样的事情:

1,22,3 
2,44,6 
3,66,63 

顺便说一句,你可以使表看起来就像这样:

local t = { 
    {22,3}; 
    {44,6}; 
    {66,63}; 
} 
+0

嘿谢谢。我很高兴。 – Qualmos