我有2个循环,如下面的代码:
for(NSString *link in pageLinks){
for(NSString *pattern in disallowedPattern){
if (range.location != NSNotFound )
// if condition is yes go back to the first loop.
}
}
如果条件为是,我希望程序返回第一个循环。我使用continue
,但它只返回第二个循环。解决方案是什么?
答案 0 :(得分:7)
break
就是你想要的。它将终止当前循环,在您的情况下,返回第一个循环。
答案 1 :(得分:3)
您应该使用break
。 continue
关键字只是重启当前循环。 (在for
循环中,continue
将在重新启动之前执行增量。)
答案 2 :(得分:2)
内循环中的break;
在内循环后立即恢复外循环。
for (NSString *link in pageLinks)
{
for (NSString *pattern in disallowedPattern)
{
if (range.location != NSNotFound)
break;
}
...execution continues here after break is executed...
}
评论中潜伏着一个问题:
这正是我得到的另一个问题; [我想在第二个for循环之后跳过]'某事';有没有解决这个问题?
我希望我已经正确地解释了它。至少有两种可能性。您选择哪一部分取决于您对goto
陈述的态度。
goto
) for (NSString *link in pageLinks)
{
for (NSString *pattern in disallowedPattern)
{
if (range.location != NSNotFound)
goto end_of_outer_loop;
}
...other code to be executed if the loop terminates...
end_of_outer_loop: ; // Null statement after the colon
}
goto
) for (NSString *link in pageLinks)
{
bool found = false;
for (NSString *pattern in disallowedPattern)
{
if (range.location != NSNotFound)
{
found = true;
break;
}
}
if (!found)
{
...other code to be executed if the loop terminates...
}
}
两者都有效;两者都相当清楚。这主要是你选择的味道问题。