如果我在 我这样做是因为在我找到我想要的东西之后,因为没有完成这些循环而得到的额外250毫秒在一段时间后就会变得有价值。 伪代码:while
循环的内有for
循环的while
循环,我怎样才能break
两个循环?< / p>
while(alwaysTrue) {
for(NSArray *arr in twoThousandItems) {
if(IFoundWhatIWasLookingFor) {
// assign some stuff here
// break everything, not just the for loop.
}
}
}
答案 0 :(得分:28)
这是goto
是你的朋友的地方。是的,那是goto
。
while(alwaysTrue) {
for(NSArray *arr in twoThousandItems) {
if(IFoundWhatIWasLookingFor) {
// assign some stuff here
// break everything, not just the for loop.
goto BAIL;
}
}
}
BAIL:
NSLog(@"Freedom!");
另一种选择是在循环中出现短路。
while(alwaysTrue && !found) {
for(NSArray *arr in twoThousandItems) {
if(IFoundWhatIWasLookingFor) {
// assign some stuff here
// break everything, not just the for loop.
found = YES;
break;
}
}
}
答案 1 :(得分:4)
这是一种方式。这是适用于其他C变体和其他语言的技术。
bool breakOuterLoop = false;
while(!breakOuterLoop)
{
for(NSArray *arr in twoThousandItems)
{
if(IFoundWhatIWasLookingFor)
{
// assign some stuff here
breakOuterLoop = true;
break;
}
}
}