我对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
答案 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