走出一个foreach
Get out of a foreach
我的 C++ 老师曾经告诉我,如果我必须使用 break 来跳出循环,那是我对循环条件考虑不够。
她(顺便说一句,非常好的老师)也没有提到 foreach 循环是这个规则的一个例外(我通常发现这是真的)或者确实有办法摆脱 foreach 循环不使用休息时间?
我问的是一般情况,但对我来说最有趣的是 Java 或 PHP。
编辑:
如果我没有说清楚,我想知道是否有一种方法可以在不使用中断的情况下退出 foreach 循环。不确定这整个骚动是关于什么的,这个问题有什么问题?
foreach
循环除了隐含的 "when there are no more items to iterate over" 外没有任何退出条件,因此在不使用某种排序的情况下避免 break
时不可能提前跳出它们一个可怕的黑客(例如抛出异常,修改迭代集合,设置布尔标志 dontContinue
并在每次迭代中检查它等)。
对于普通循环,确实总有一个明显的方法可以避免使用 break
(使用 continue
或 if
停止当前迭代,并将提前退出条件放入循环的条件),但是这种方法是否会导致比使用 break
更易读的代码是有争议的。
在某些情况下,您想要早点跳出循环的原因是因为您完成了需要完成的任何任务,或者找到了需要的项目。在这种情况下,请考虑将特定功能放入单独的方法中并使用 return
而不是 break
.
我的 C++ 老师曾经告诉我,如果我必须使用 break 来跳出循环,那是我对循环条件考虑不够。
她(顺便说一句,非常好的老师)也没有提到 foreach 循环是这个规则的一个例外(我通常发现这是真的)或者确实有办法摆脱 foreach 循环不使用休息时间?
我问的是一般情况,但对我来说最有趣的是 Java 或 PHP。
编辑: 如果我没有说清楚,我想知道是否有一种方法可以在不使用中断的情况下退出 foreach 循环。不确定这整个骚动是关于什么的,这个问题有什么问题?
foreach
循环除了隐含的 "when there are no more items to iterate over" 外没有任何退出条件,因此在不使用某种排序的情况下避免 break
时不可能提前跳出它们一个可怕的黑客(例如抛出异常,修改迭代集合,设置布尔标志 dontContinue
并在每次迭代中检查它等)。
对于普通循环,确实总有一个明显的方法可以避免使用 break
(使用 continue
或 if
停止当前迭代,并将提前退出条件放入循环的条件),但是这种方法是否会导致比使用 break
更易读的代码是有争议的。
在某些情况下,您想要早点跳出循环的原因是因为您完成了需要完成的任何任务,或者找到了需要的项目。在这种情况下,请考虑将特定功能放入单独的方法中并使用 return
而不是 break
.