我有一个简单的while循环。我想使它在条件变量更改时打破循环。相反,它完成了循环,然后才中断它。
a = true
while( a == true )
do
center_general_medium:highlight(1)
center_general_small:highlight(1)
center_general_tiny:highlight(1)
a = false << ------------------- should break loop here if, for some reason, "a" value is changed.
center_general_medium:highlight(1)
center_general_small:highlight(1)
center_general_tiny:highlight(1)
end
答案 0 :(得分:2)
简短的回答:不,那不是循环的工作原理。
长答案:从技术上讲,您可以用很多魔术来做到这一点,但是看起来并不漂亮。协程和元方法可以带给您很长的路要走,如果您愿意为它做些工作,但我认为在您的示例中不值得这样做。
看看你的问题,很明显,你实际上有一个内在和一个外在的循环。外部是while
循环,内部只是循环几个对象并在它们上调用:highlight(1)
。因此,您真正想要的是一次break
经过两个循环,这是无法完成的。相反,您应该将内部循环编写为实际循环,并在a == false
时中断该循环,然后由于未满足条件而停止外部循环。
local objects = {
center_general_medium,
center_general_small,
center_general_tiny,
center_general_medium,
center_general_small,
center_general_tiny
}
a = true
while a do
for _, object in ipairs(objects) do
object:highlight(1)
if not a then break end
end
end