-1
如果满足特定条件,我将如何中断循环?打破Groovy中的每个循环
我的输入文件有大约n行。如果所需的信息在第m行得到,我需要打破循环而不是读取其余的行。
new File("test.txt").readLines().reverseEach{line ->
println line
if(line.contains("Data"))
break;
}
如果满足特定条件,我将如何中断循环?打破Groovy中的每个循环
我的输入文件有大约n行。如果所需的信息在第m行得到,我需要打破循环而不是读取其余的行。
new File("test.txt").readLines().reverseEach{line ->
println line
if(line.contains("Data"))
break;
}
你不能从封闭中突破。您可以抛出异常并退出,也可以根本不使用闭包。读取数组/列表中的所有行并遍历它。
您可以使用find
来做到这一点。查找结束第一次返回闭环返回true
并返回最后找到的元素。
这
(1..20).find{
println it
it == 5
}
将在常规控制台下面。
1
2
3
4
5
Result: 5
像这样使用'find'假定它在您正在使用的Groovy的版本/实现中实现为单线程顺序算法。 – 2013-02-21 10:08:17
@VorgvanGeir好吧,你有一个点。 groovy文档只声明[“查找与IDENTITY Closure匹配的第一个项目”](http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html#find())。出于好奇...有没有任何Groovy实现可以做到这一点,例如,多线程还是非顺序? – hsan 2013-02-21 10:38:47