打破Groovy中的每个循环

打破Groovy中的每个循环,groovy,Groovy,如果满足特定条件,我将如何打破循环 我的输入文件大约有n行。如果所需的信息是在某个mth线,我需要打破循环,而不是读取其余的线 new File("test.txt").readLines().reverseEach{line -> println line if(line.contains("Data")) break; } 你不能就这样结束了。您可以抛出异常并从中退出,也可以根本不使用闭包。读取数组/列表中的所有行,并对其进行迭代。您不能仅仅从闭包中中断。您

如果满足特定条件,我将如何打破循环

我的输入文件大约有n行。如果所需的信息是在某个mth线,我需要打破循环,而不是读取其余的线

new File("test.txt").readLines().reverseEach{line ->
   println line

   if(line.contains("Data"))
   break;
 }  

你不能就这样结束了。您可以抛出异常并从中退出,也可以根本不使用闭包。读取数组/列表中的所有行,并对其进行迭代。

您不能仅仅从闭包中中断。您可以抛出异常并从中退出,也可以根本不使用闭包。读取数组/列表中的所有行并遍历它。

您可以使用
find
来执行此操作。Find在闭包第一次返回
true
时结束循环,并返回最后找到的元素

这个

将在groovy控制台中显示以下内容

1
2
3
4
5
Result: 5

您可以使用
find
来执行此操作。Find在闭包第一次返回
true
时结束循环,并返回最后找到的元素

这个

将在groovy控制台中显示以下内容

1
2
3
4
5
Result: 5

像这样使用“find”假定它是在您使用的Groovy版本/实现中作为单线程顺序算法实现的。@VorgvanGeir好的,您有一个观点。groovy文档只声明。只是出于好奇。。。是否有任何Groovy实现以不同的方式实现此功能,例如多线程或非顺序?像这样使用“find”假设它在您使用的Groovy版本/实现中实现为单线程顺序算法。@vorgvangir好的,这是有道理的。groovy文档只声明。只是出于好奇。。。是否有任何Groovy实现以不同的方式实现此功能,例如多线程或非顺序?