break
在大多数语言中都会中断for循环,但在嵌套循环的情况下,我从未遇到过 n 次的中断。
1.用任何语言都有这样的东西吗?
2.如果是,那么它的正确名称是什么?
如果没有,为什么?
NB。我不是在寻找解决方法。
关于第3点。我所知道的最接近的是goto
,不应该使用它,因为它会导致意大利面条代码(Python仅在笑话模块中使用它),但这似乎是一个不同的问题boolean变量用于标记内部中断,捕获引发的自定义错误或将块移动到函数以便与返回中断更复杂(在代码中的行号和变量方面)。
(从理论的角度来看,这是一个好奇的问题,但如果它有帮助,我主要用Python,Matlab和JS编写代码。我知道Perl,Pascal和Basic,但我只知道它的基础知识C ++并且很少知道机器代码。)
答案 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 breakbreak
答案 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...