我如何在带有标签的for循环中使用'break'语句?
例如:
outer: for(int i = 0;i<[arABFBmatches count];i++){
for(int i = 0;i<[arABFBmatches count];i++){
//
break _____;
}
}
如何跳出外层循环?
我如何在带有标签的for循环中使用'break'语句?
例如:
outer: for(int i = 0;i<[arABFBmatches count];i++){
for(int i = 0;i<[arABFBmatches count];i++){
//
break _____;
}
}
如何跳出外层循环?
从你的问题中很难说。我的理解是你想跳过内部循环的其余迭代,并继续外部循环吗?
for (int i = 0; i < [arABFBmatches count]; i++) {
for (int j = 0; j < [arABFBmatches count]; j++) {
if (should_skip_rest)
break; // let outer loop continue iterating
}
}
请注意,我更改了您内部循环不变量的名称; 在两个中都使用i会招致疯狂。BOOL allDoneNow = NO;
for (int i = 0; i < [arABFBmatches count]; i++) {
for (int j = 0; j < [arABFBmatches count]; j++) {
if (should_skip_rest) {
allDoneNow = YES;
break;
}
}
if (allDoneNow) break;
}
for(int i = 0;i<[arABFBmatches count];i++){
for(int j = 0;j<[arABFBmatches count];j++){
//
goto outer_done;
}
}
outer_done:
Objective-C 没有标记的 break 语句。
goto
,请非常非常小心,确保你正确处理内存管理。 - Dave DeLonggoto
比设置标志并测试标志以确定是否退出外部循环更好。当然,我们必须小心。 - neevekgoto
可能会轻松地跳过拆卸操作。如果以后必须添加此类逻辑,重构时很容易忘记短路情况。有一个强有力的论点支持无跳转的控制流程。 - bbumBOOL done = NO;
for(int i = 0;i<[arABFBmatches count] && !done; i++)
{
for(int i = 0;i<[arABFBmatches count] && !done;i++)
{
if (termination condition)
{
// cleanup
done = YES;
}
}
}
来自苹果公司Objective-C文档:
Objective-C被定义为标准ANSI C语言的一组小而强大的扩展。
因此,break和continue可以在C语言允许的任何地方使用。
continue可以在循环结构(for、while和do/while循环)中使用。
break可以在这些相同的循环结构以及switch语句中使用。
'break'只能跳出最里层的循环或者switch语句。你可以使用'return'在任何时候退出函数。请查看this链接。