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

Is there any language that allows a break through multiple loops?

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

关于第 3 点。我知道的最接近的是 goto,不应使用它,因为它会导致意大利面条代码(Python 仅在笑话模块中有),但这似乎就像一个不同的问题,作为一个布尔变量来标记一个内部中断,捕获一个引发的自定义错误或将块移动到一个函数以便用 return 中断要复杂得多(就行号和变量而言在代码中)。

(从理论的角度来看,这是一个好奇的问题,但如果有帮助,我主要在Python,Matlab和JS中进行编码。我知道Perl,Pascal和Basic ,但我只知道 C++ 的基础知识,对机器代码知之甚少。)

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
            }
        }
    }

我不知道有什么语言可以让你做到这一点(除了@dasblinkenlight 的例子 - 并不是说​​没有)但是你可以用任何具有 break声明。

即布尔退出循环 var.

条件中断
var exitLoops = false;
for (var i = 0; i < x; i++) {
    for (var j = 0; j < y; j++) {
        for (var k = 0; k < z; k++) {
            if (something) {
                exitLoops = true;
                break;
            }
        }
        if (exitLoops) break;
    }
    if (exitLoops) break;
}

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

在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...