嵌套循环中 continue 2 和 break 的区别
difference between continue 2 and break in nested loops
我在重构一些旧代码时偶然发现了一个 continue 2
可以很容易地用 break 替换的代码。
for($rows as $i){
for($columns as $j){
if( Helper::unicornExists($i, $j) ){
//continue 2;
break;
}
}
}
如果我们说 continue 2
使代码更复杂且难以阅读,
有什么好的理由使用它(在 2 级)嵌套循环吗?
在这个特定示例中,它似乎是同一件事,由您决定您喜欢它的方式。我可以看到保留 continue 2
的一个原因是,如果在你的项目的未来开发中,你会在内部 for 之后添加一些东西
for($rows as $i){
for($columns as $j){
if( Helper::unicornExists($i, $j) ){
//continue 2;
break;
}
}
echo 'done with ', $i, PHP_EOL;
}
如果独角兽确实存在,您需要考虑您的期望。您是想只跳过内部循环,这就是 break
会做的,还是您也想跳过外部循环,这就是 continue 2
会做的。
我在重构一些旧代码时偶然发现了一个 continue 2
可以很容易地用 break 替换的代码。
for($rows as $i){
for($columns as $j){
if( Helper::unicornExists($i, $j) ){
//continue 2;
break;
}
}
}
如果我们说 continue 2
使代码更复杂且难以阅读,
有什么好的理由使用它(在 2 级)嵌套循环吗?
在这个特定示例中,它似乎是同一件事,由您决定您喜欢它的方式。我可以看到保留 continue 2
的一个原因是,如果在你的项目的未来开发中,你会在内部 for 之后添加一些东西
for($rows as $i){
for($columns as $j){
if( Helper::unicornExists($i, $j) ){
//continue 2;
break;
}
}
echo 'done with ', $i, PHP_EOL;
}
如果独角兽确实存在,您需要考虑您的期望。您是想只跳过内部循环,这就是 break
会做的,还是您也想跳过外部循环,这就是 continue 2
会做的。