Groovy 从闭包返回结果

到目前为止,你已经知道了如何声明闭包和如何调用闭包,现在我们还有一个重要的主题没有涉及到:怎样从闭包返回结果。

在理论上,有2种返回结果的方式:

 闭包最后一个表达式执行的结果,并且这个结果被返回,这叫做结束返回(end return),在最后的语句前面的return关键字是可选的。

 使用return关键字从闭包的任何地方返回。

这意味着下面两种对list的操作有相同的效果:[code][1, 2, 3].collect{ it * 2 }

[1, 2, 3].collect{ re turn it * 2 }
[/code]使用return进行提前返回,例如,仅仅对偶数进行处理:[code][1, 2, 3].collect{
if (it%2 == 0) re turn it * 2

return it
}[/code]在闭包中使用return关键字是简单易懂的,你几乎不会有任何误解,但有些事情需要了解。

警告:在闭包内使用return关键字与在闭包外使用是有区别的。

在闭包体外面,任何出现return的地方都会导致离开当前方法,当在闭包体内出现return语句时,这仅仅结束闭包的当前计算,这是更加有限的,例如,当使用List.each时,从闭包的提前返回不会引起从each方法的提前返回——闭包仍旧会在list的下一个元素出现时被调用。