使用" ipairs"了解嵌套for / in循环

时间:2015-05-04 05:16:48

标签: lua lua-table

有些人可以帮我理解这段代码吗?

local dev
for _, dev in ipairs(devices) do
        local net
        for _, net in ipairs(dev:get_wifinets()) do
                netlist[#netlist+1] = net:id()
                netdevs[net:id()] = dev:name()
        end
end

1 个答案:

答案 0 :(得分:6)

分解,它就像这样。

local dev

不是真的需要,但我想你知道它会创建局部变量dev

for _, dev in ipairs(devices) do

循环索引表devices,并将值存储在dev本地。

local net

同样,不是真的需要。

    for _, net in ipairs(dev:get_wifinets()) do

dev使用函数get_wifinets(),该函数反过来返回net循环的索引表作为值。

            netlist[#netlist+1] = net:id()

这将使用id()返回的表中的值net使用get_wifinets()函数,并将其存储为netlist表中的最后一个元素。

           netdevs[net:id()] = dev:name()

由于我们仍然在dev值循环的范围内,因此它采用name()值的dev函数并将其存储到列出的表中,无论是索引还是字典。

希望这有助于回答您的问题。