将值插入嵌套表中

时间:2016-10-26 06:30:03

标签: lua lua-table

我对Lua很新,并且编程一般。我一直在想如何使用table.insert嵌套表。到目前为止,这是我写的,但它不会在嵌套表中插入任何内容。

days = {d1 = {},d2 = {},d3 = {},d4 = {},d5 = {},d6 = {},d7 = {},d8 = {},d9 ={},d10 = {},d11 = {},d12 = {},d13 = {},d14 = {},d15 = {},d16 = {},d17 = {},d18 =  {},d19 = {},d20 = {},d21 = {},d22 = {},d23 = {},d24 = {},d25 = {} , d26 = {}, d27 = {}, d28 = {}, d29 = {}, d30 = {}, d31 = {}}
dw = 0
dh = 0
for _,v in pairs(days) do
    for _,v in pairs(v) do
        table.insert(v, dw)
        table.insert(v, dh)
    end
end

for _,v in pairs(days) do
    for _,v in pairs(v) do
        print(v)
    end
end

1 个答案:

答案 0 :(得分:2)

您不需要遍历表格来为其添加值。实际上,当您在表上迭代时向表中添加值可能会导致循环永不退出,因为它会在每次迭代时添加新值。幸运的是,你的表是空的,所以程序永远不会进入那个循环。

for _,v in pairs(days) do
    for _,v in pairs(v) do -- <- unnecessary, potentially dangerous!
        table.insert(v, dw)
        table.insert(v, dh)
    end
end

只需移除内环。

for _,v in pairs(days) do
    table.insert(v, dw)
    table.insert(v, dh)
end

另外,请考虑生成这组表的其他选项。

local days = (function (t)
    for n = 1, 31 do
        t['d' .. n] = { 0, 0 }
    end

    return t
end) {}

简化为:

local days = {}

for n = 1, 31 do
    days['d' .. n] = { 0, 0 }
end