Lua-遍历嵌套列表
我将尽可能地简化情况。我有以下代码:Lua-遍历嵌套列表,lua,Lua,我将尽可能地简化情况。我有以下代码: windows = { "window1", "window2" } window1 = { x = 100 y = 100 properties = { active = false, width = 200, height = 200 } } window2 = { x = 0 y = 0 properties = { active = false, width = 200, height = 200 } } 如果我执行以下操作,我将获得正确的输出
windows = { "window1", "window2" }
window1 = {
x = 100
y = 100
properties = { active = false, width = 200, height = 200 }
}
window2 = {
x = 0
y = 0
properties = { active = false, width = 200, height = 200 }
}
如果我执行以下操作,我将获得正确的输出:
print (window1.x)
OUTPUT: 0
print (window1.properties.active)
OUTPUT: false
但是,如果我遍历列表,我会得到“l.x”和“l.properties.active”的“nil”值:
是否有其他方法需要迭代列表中的变量,以便获得值?这不是嵌套表,而是包含字符串的表。而且,正如您刚才看到的,字符串不包含键
“x”
的值
您必须按顺序排列表格:
local window1 = {...} -- first table
local window2 = {...} -- second table
local windows = {window1, window2}
for _,l in ipairs(windows) do
-- do stuff with l
end
或者,如果要保留字符串列表并遍历字符串,请将窗口放在第二个表中,使用这些字符串作为键
local windowNames = { "window1", "window2" }
local windows = {}
windows.window1 = {...} -- first table
windows.window2 = {...} -- second table
for _,l in ipairs(windowNames) do
local ourWindow = windows[l]
-- do stuff with ourWindow
end
这不是一个嵌套表,而是一个包含字符串的表。而且,正如您刚才看到的,字符串不包含键
“x”
的值
您必须按顺序排列表格:
local window1 = {...} -- first table
local window2 = {...} -- second table
local windows = {window1, window2}
for _,l in ipairs(windows) do
-- do stuff with l
end
或者,如果要保留字符串列表并遍历字符串,请将窗口放在第二个表中,使用这些字符串作为键
local windowNames = { "window1", "window2" }
local windows = {}
windows.window1 = {...} -- first table
windows.window2 = {...} -- second table
for _,l in ipairs(windowNames) do
local ourWindow = windows[l]
-- do stuff with ourWindow
end
没错。您知道我如何在Lua中将这些字符串用作变量名吗?@Neekoy知道,但这取决于您是否希望表排序。@Neekoy我添加了一个保持字符串顺序的示例。我还添加了
local
关键字,因为没有该关键字的变量被添加到全局范围。刚刚测试了这个,它就工作了!非常感谢,我自己肯定不会得出结论(至少在这一点上)。这是正确的。您知道我如何在Lua中将这些字符串用作变量名吗?@Neekoy知道,但这取决于您是否希望表排序。@Neekoy我添加了一个保持字符串顺序的示例。我还添加了local
关键字,因为没有该关键字的变量被添加到全局范围。刚刚测试了这个,它就工作了!非常感谢你,我自己肯定不会得出结论(至少在这一点上)。