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

kha*_*med -1 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
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 6

分解,它的工作原理如下.

local dev
Run Code Online (Sandbox Code Playgroud)

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

for _, dev in ipairs(devices) do
Run Code Online (Sandbox Code Playgroud)

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

local net
Run Code Online (Sandbox Code Playgroud)

再次,不是真的需要.

    for _, net in ipairs(dev:get_wifinets()) do
Run Code Online (Sandbox Code Playgroud)

dev使用该函数get_wifinets(),该函数又返回一个索引表,net循环通过该值作为值.

            netlist[#netlist+1] = net:id()
Run Code Online (Sandbox Code Playgroud)

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

           netdevs[net:id()] = dev:name()
Run Code Online (Sandbox Code Playgroud)

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

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