Объективный C-цикл и продолжить
Как я могу использовать оператор "break" в цикле for, который продолжает формировать указанную метку?
ех;
outer: for(int i = 0;i<[arABFBmatches count];i++){
for(int i = 0;i<[arABFBmatches count];i++){
//
break _____;
}
}
Как нарушить внешний?
Ответы
Ответ 1
Трудно сказать из вашего вопроса. Я бы это интерпретировал, что вы хотите пропустить остальные итерации внутреннего цикла и продолжить внешний цикл?
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
в обоих вызывает безумие.
Если вы хотите выйти из обоих циклов, я бы не использовал goto. Я бы сделал:
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;
}
Ответ 2
Грубо:
for(int i = 0;i<[arABFBmatches count];i++){
for(int j = 0;j<[arABFBmatches count];j++){
//
goto outer_done;
}
}
outer_done:
Objective-C не имеет помеченного перерыва.
Ответ 3
От Apple Objective-C docs:
Objective-C определяется как небольшой, но мощный набор расширений стандартный язык ANSI C.
Таким образом, break и continue могут использоваться везде, где они разрешены в C.
continue может использоваться в циклах конструкций (for, while и do/while).
break может использоваться в тех же конструкциях цикла, а также в операторах switch.
Ответ 4
'break' выведет вас из самого внутреннего цикла или переключателя. Вы можете использовать 'return' для выхода из функции в любое время. Пожалуйста, посмотрите ссылку .
Ответ 5
BOOL 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;
}
}
}
Ответ 6
вниз голос......
Если использование goto упрощает код, тогда это будет уместно.
for (;;)
{
for (;;)
{
break; /* breaks inner loop */
}
for (;;)
{
goto outer; /* breaks outer loop */
}
}
outer:;