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 }
}

如果我这样做,我会得到正确的输出:

print (window1.x)
OUTPUT: 0
print (window1.properties.active)
OUTPUT: false

然而,如果我遍历这个列表,"l.x"和"l.properties.active"的值会变成"nil":

for _,l in ipairs(windows) do
    print (l)
    print (l.x)
    print (l.properties.active)
end

我需要以不同的方式遍历列表中的变量,这样我才能获得这些值吗?

点赞
用户4447998
用户4447998

这不是一个嵌套表,只是一个包含字符串的表。而且,正如你刚看到的,一个字符串并不包含键“x”的值。

你必须将_表_放在一个序列中:

local window1 = {...} -- 第一个表

local window2 = {...} -- 第二个表

local windows = {window1, window2}

for _,l in ipairs(windows) do
    -- 对l进行操作
end

或者,如果您想保留字符串列表并在这些字符串上进行迭代,请将窗口放入第二个表中,使用这些字符串作为键。

local windowNames = { "window1", "window2" }
local windows = {}

windows.window1 = {...} -- 第一个表

windows.window2 = {...} -- 第二个表

for _,l in ipairs(windowNames) do
    local ourWindow = windows[l]
    -- 对ourWindow进行操作
end
2015-12-31 00:41:36