理解 "ipairs" 的嵌套 for/in 循环

Understanding nested for/in loops with "ipairs"

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

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

分解后,它是这样工作的。

local dev

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

for _, dev in ipairs(devices) do

循环索引 table devices,并将值存储到本地 dev

local net

再说一次,不是真的需要。

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

dev 使用函数 get_wifinets(),它反过来 returns 一个索引 table,net 作为值循环。

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

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

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

由于我们仍然在dev值循环的范围内,所以这需要dev值的name()函数并将其存储到table列出,无论是索引还是字典。

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