在内部循环中Continue外部循环

简介:
有时候你希望在一个嵌套循环的外层循环中执行Continue操作。例如,假设你有一连串的标准,和一堆items。
并且你希望找到一个符合每个标准的item。
 
match = null;
foreach(var item in items)
{
  foreach(var criterion in criteria)
  {
    if (!criterion.IsMetBy(item)) //如果不符合标准
    {
        //那么说明这个item肯定不是要查找的,那么应该在外层循环执行continue操作
    }
  }
  match = item;
  break;
}
 
有很多方法可以实现这个需求,这里有一些:
 
  
 

方法#1(丑陋的goto):使用goto语句。

match = null;
foreach(var item in items)
{
  foreach(var criterion in criteria)
  {
    if (!criterion.IsMetBy(item))
    {
      goto OUTERCONTINUE;
    }
  }
  match = item;
  break;

OUTERCONTINUE:
  ;
}
如果不符合其中的一个标准,那么goto OUTCONTINUE:,接着检查下一个item。
 

方法#2(优雅,漂亮):

当你看到一个嵌套循环,基本上你总是可以考虑将内部的循环放到一个它自己的方法中:
match = null;
foreach(var item in items)
{
  if (MeetsAllCriteria(item, critiera))
  {
    match = item;
    break;
  }
}

MeetsAllCriteria方法的内部很明显应该是

foreach(var criterion in criteria)
  if (!criterion.IsMetBy(item))
    return false;
return true;

 

方法#3,使用标志位:

match = null;
foreach(var item in items)
{
 foreach(var criterion in criteria)
 {
   HasMatch=true;
   if (!criterion.IsMetBy(item))
   {
     // No point in checking anything further; this is not
     // a match. We want to “continue” the outer loop. How?
    HasMatch=false;
    break;
   }
 }
 if(HasMatch) {
    match = item;
    break;
 }
}
 

方法#4,使用Linq。

var matches = from item in items 
              where criteria.All(
                criterion=>criterion.IsMetBy(item)) 
              select item;
match = matches.FirstOrDefault();
对于在items中的每个item,都检查是否满足所有的标准。





本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2011/07/03/2096618.html,如需转载请自行联系原作者
目录
相关文章
循环控制中关键字break和continue的使用
循环控制中关键字break和continue的使用
90 1
|
5月前
|
搜索推荐 Python
为什么我们需要循环控制
在计算机编程中,循环控制是一种非常基础和重要的编程结构。通过循环控制,我们可以实现重复执行某段代码,直到满足特定的条件为止。循环控制不仅简化了编程过程,还提高了代码的效率,使得复杂的计算或任务能够得以高效完成。
41 1
|
5月前
|
Python
使用break语句提前终止循环
在编程中,循环结构是一种常用的控制流程机制,它允许代码块重复执行,直到满足某个条件为止。然而,在某些情况下,我们可能希望在循环的某个点提前终止循环,而不是等到满足循环条件。这时,我们可以使用break语句来实现这一功能。
55 1
|
5月前
|
Python
改变循环执行的状态
在编程中,循环是常用的控制结构之一,它允许代码块在一定条件下重复执行。然而,有时候我们可能需要在循环执行过程中改变其状态,比如提前终止循环或跳过当前迭代进入下一次迭代。Python提供了break和continue语句,帮助我们改变循环的执行状态。下面,我们将详细介绍如何使用这两个语句来改变循环的执行状态,并附上示例代码。
43 0
|
5月前
while循环和do while循环有什么区别
while循环和do while循环有什么区别
62 0
|
11月前
while循环和do while循环有什么区别?
while循环和do while循环有什么区别?
108 0
#PY小贴士# for 循环定义的变量,循环外可以用吗?
我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?
|
Java
三种循环的区别
三种循环的区别
81 0
|
算法 C++
C++——循环控制强化训练
C++——循环控制强化训练