如果'lua在内部执行'内部'如何跳出外部循环

问题描述 投票:2回答:2
S = 'MSH, mdmOBX, TXA'
for u in string.gmatch(S, "([^,%s]+)"),1 do
    l[k] = u
    for a in string.gmatch(u,'.-([A-Z].*)'),1 do       
        g[z] = a
        print(g)
        _G["Map"..l[k]](Msg[g[z]],R[1])
    end
    _G["Map"..l[k]](Msg[l[k]],R[1])     
end

我有上面的代码,我希望仅当未执行内部for循环时才执行内部循环外的语句,我尝试使用'break'关键字,但该命令不起作用,并且控制权已传递给外部循环。如何解决此问题?

loops lua
2个回答
4
投票
从Lua 5.2开始,您可以

goto label -- This statement goes to the jump-label label ::label:: -- The jump-label label

[在每个循环后使用检查标志变量,可以使用连续的break语句将其设置为早期救援,这是那些担心goto或因缺乏它而受到谴责的经典方法。

local earlyreturn for u in ... do for a in ... do if ... then earlyreturn = true break end end if earlyreturn then break end end

无论如何,您也可以将循环包装在函数中并使用return

function(...) for u in ... do for a in ... do if ... then return end end end end(...)


2
投票
从技术上讲,回答“如何打破多个循环”:您可以使用带有适当放置的标签的goto语句,尽管它可能不是最佳解决方案。如何将内部循环的主体包装在if中呢?
© www.soinside.com 2019 - 2024. All rights reserved.