我想从一个闭包返回,就像在循环中使用break语句一样.
例如:
largeListOfElements.each{ element->
if(element == specificElement){
// do some work
return // but this will only leave this iteration and start the next
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的if语句中,我想停止遍历列表并离开闭包以避免不必要的迭代.
我已经看到了一个解决方案,在闭包内抛出一个异常并被抓到外面,但我不太喜欢那个解决方案.
除了更改代码以避免这种算法之外,还有其他解决方案吗?
我有一个groovy类,能够将其输出写入StringWriter- (通过setStringWriter方法).
在java中我会使用以下代码:
filter.setStringWriter(new StringWriter(){
@Override
public void write(String string){
// do something with the string
}
});
Run Code Online (Sandbox Code Playgroud)
对于Groovy,我被告知要使用一个闭包,我已经尝试了以下但没有运气:
def s = {String line -> print line} as StringWriter
filter.setStringWriter(s)
Run Code Online (Sandbox Code Playgroud)
要么
filter.setStringWriter{String line -> print line}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢,或者甚至可能吗?
我想在Jasper报告填写编译报告时向用户提供进展.基本上我想在执行时取得进展:
JasperFillManager.fillReport(JasperReport rpt,Map params,JRDataSource src)
反正有没有实现这个目标?