-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