是否有任何语言允许突破多个循环?

时间:2016-04-30 12:08:55

标签: for-loop break goto

break在大多数语言中都会中断for循环,但在嵌套循环的情况下,我从未遇到过 n 次的中断。
1.用任何语言都有这样的东西吗? 2.如果是,那么它的正确名称是什么? 如果没有,为什么?
NB。我不是在寻找解决方法。

关于第3点。我所知道的最接近的是goto,不应该使用它,因为它会导致意大利面条代码(Python仅在笑话模块中使用它),但这似乎是一个不同的问题boolean变量用于标记内部中断,捕获引发的自定义错误或将块移动到函数以便与返回中断更复杂(在代码中的行号和变量方面)。

(从理论的角度来看,这是一个好奇的问题,但如果它有帮助,我主要用Python,Matlab和JS编写代码。我知道Perl,Pascal和Basic,但我只知道它的基础知识C ++并且很少知道机器代码。)

4 个答案:

答案 0 :(得分:6)

Java有一个标记的break 语句,可以让你突破任意数量的循环:

search:
    for (i = 0; i < arrayOfInts.length; i++) {
        for (j = 0; j < arrayOfInts[i].length;
             j++) {
            if (arrayOfInts[i][j] == searchfor) {
                foundIt = true;
                break search; // <<=== This statement breaks both nested loops
            }
        }
    }

答案 1 :(得分:1)

我不知道有任何语言允许你这样做(除了@dasblinkenlight示例 - 并没有说没有任何内容)但你可以用任何语言{{{{{{{{{ 1}}陈述。

即。在布尔出口循环var。

上的conditionnaly break
break

答案 2 :(得分:0)

不,没有(据我所知)。为什么?因为如果你需要一次退出几个嵌套的for循环,那么你有一个代码设计问题,而不是语法问题。除了@PinkTurtle之外,上面给出的所有答案都使用某种goto语句,这是不推荐的。

答案 3 :(得分:0)

在JavaScript中,您可以执行此操作

将以下内容粘贴到Chrome开发者控制台

free: 
for(var i=0; i<10; i++) {
  for(var j=0; j<10; j++) {
    for(var k=0;k<10;k++){
      console.log('I am at i='+i+' , j='+j+ ' , k='+k);
      if(k==3) { 
        console.log('I will now break FREE...');
        break free;
      }
    }
  }
}

console.log('... And Now I am Here...')

<强>输出

I am at i=0 , j=0 , k=0
I am at i=0 , j=0 , k=1
I am at i=0 , j=0 , k=2
I am at i=0 , j=0 , k=3
I will now break FREE...
... And Now I am Here...