2013-02-18 102 views
-1

如果满足特定条件,我将如何中断循环?打破Groovy中的每个循环

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

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

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

回答

0

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

3

您可以使用find来做到这一点。查找结束第一次返回闭环返回true并返回最后找到的元素。

(1..20).find{ 
    println it 
    it == 5 
} 

将在常规控制台下面。

1 
2 
3 
4 
5 
Result: 5 
+0

像这样使用'find'假定它在您正在使用的Groovy的版本/实现中实现为单线程顺序算法。 – 2013-02-21 10:08:17

+0

@VorgvanGeir好吧,你有一个点。 groovy文档只声明[“查找与IDENTITY Closure匹配的第一个项目”](http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html#find())。出于好奇...有没有任何Groovy实现可以做到这一点,例如,多线程还是非顺序? – hsan 2013-02-21 10:38:47