如果在lua中执行了内部的“for”循环,如何跳出外层循环

我有以上代码,我希望内部循环之外的语句只在内部循环未被执行时才执行,我尝试使用'break'关键字,但没有起作用,并且控制被传递给了外层循环。如何解决这个问题?

点赞
用户3204551
用户3204551

自 Lua 5.2 开始,你可以像下面这样使用 goto

goto label -- 跳转到 jump-label 标签
::label:: -- jump-label 标签

使用一个被检查的标志变量来在每一次循环后的 break 语句中设置为 true,以实现提前终止循环是那些害怕 goto,或者因为缺乏 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(...)
2014-04-15 17:51:04
用户3477950
用户3477950

从技术上讲,回答“如何打破多重循环”:您可以使用带有适当放置的标签的goto语句,尽管这可能不是最佳解决方案。如果将内部循环的主体放在if中怎么样?

2014-04-15 17:51:26