Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua-遍历嵌套列表_Lua - Fatal编程技术网

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
关键字,因为没有该关键字的变量被添加到全局范围。刚刚测试了这个,它就工作了!非常感谢你,我自己肯定不会得出结论(至少在这一点上)。