将值插入嵌套表
Inserting values into nested tables
我对 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
您无需遍历 table 即可为其添加值。事实上,在迭代 table 时向 table 添加值可能 会导致循环永远不会退出,因为它会添加新值 every 迭代。幸运的是,您的 table 是空的,因此程序永远不会进入该循环。
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
此外,考虑生成这组 table 的其他选项。
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
我对 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
您无需遍历 table 即可为其添加值。事实上,在迭代 table 时向 table 添加值可能 会导致循环永远不会退出,因为它会添加新值 every 迭代。幸运的是,您的 table 是空的,因此程序永远不会进入该循环。
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
此外,考虑生成这组 table 的其他选项。
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