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'关键字,但没有工作,控制权传递给outerloop。如何解决这个问题?
答案 0 :(得分:3)
从Lua 5.2开始,你可以
goto label -- This statement goes to the jump-label label
::label:: -- THe jump-label label
使用在每个循环之后检查的标志变量,可以使用连续的break
语句设置它以进行早期救助,这是一个经典的担心goto
,或者因为缺乏它而受到谴责。 / p>
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(...)
答案 1 :(得分:2)
从技术上讲,回答"如何打破多个循环":您可以使用带有适当放置标签的goto
语句,尽管它可能不是最佳解决方案。如何用if
包裹内环的主体呢?