【问题标题】:Get out of a foreach [closed]离开foreach [关闭]
【发布时间】:2017-02-22 08:10:33
【问题描述】:

我的 C++ 老师曾经告诉我,如果我必须使用 break 来退出循环,我对循环条件的考虑不够。

她(顺便说一句非常好的老师)也没有提到 foreach 循环是这条规则的一个例外(我通常认为这是真的)或者确实有一种方法可以在不使用的情况下摆脱 foreach 循环休息?

我问的是一般情况,但对我来说最有趣的是 Java 或 PHP。

编辑: 如果我没有说清楚,我想知道是否有一种方法可以在不使用中断的情况下退出 foreach 循环。不知道这整个骚动是关于什么的,这个问题有什么问题?

【问题讨论】:

  • 您是否尝试过实现并查看它的实际作用?
  • 我不确定我是否得到你的问题...是的,我已经实现了 foreach-loops ...?
  • 我不同意你老师的观点。也许在定义明确的练习和问题的学术世界中,她有一个观点。但在不可预测的用户和海量数据集的现实世界中,当您知道继续没有意义时打破循环通常是您拥有的最干净的解决方案。
  • 您是否正在寻找可以打破循环但不称为“中断”的东西?仅仅靠前任老师的口头禅生活? PHP 确实有一个goto 语句可以做到这一点。我个人会坚持使用break
  • 她指出,如果您的循环中有一个条件,如果满足,就会触发一个中断,您可以将此条件与您的循环条件结合起来,因此不必使用中断。跨度>

标签: java php foreach break


【解决方案1】:

foreach 循环没有任何退出条件,除了隐含的“当没有更多要迭代的项目时”,因此在不使用某种类型的情况下避免break 时不可能提前退出它们可怕的 hack(例如抛出异常、修改迭代集合、设置布尔标志 dontContinue 并在每次迭代中检查它等)。

对于普通循环,确实总有一种明显的方法可以避免使用break(使用continueif停止当前迭代,并将提前退出条件放入循环条件),但是这种方法是否会导致比使用break 更易读的代码是有争议的。


在某些情况下,您想要提前跳出循环的原因是因为您完成了任何需要完成的任务,或者找到了所需的项目。在这种情况下,请考虑将特定功能放入单独的方法中并使用return 而不是break

【讨论】:

  • 有点像我已经想到的,因为它完全有道理。基本上只是在寻找确认。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2018-07-11
  • 1970-01-01
  • 2017-08-05
  • 2014-05-20
  • 2019-06-11
  • 2010-12-05
  • 1970-01-01
相关资源
最近更新 更多