调用Groovy闭包

时间:2010-01-06 17:15:19

标签: groovy closures

如果我在Groovy中定义一个闭包

def c = {println "foo"}

我可以使用

调用它
c()

c.call()

AFAIK,这两者完全相同。但是,我最近发现了第三种方式

c.doCall()

call()doCall()

之间是否存在任何差异

谢谢, 唐

1 个答案:

答案 0 :(得分:14)

doCall方法是在调用c()或c.call()时调用的方法。

我发现了一个声明它用于从内部调用闭包的示例,但这似乎也适用于call()。

documentation表示你需要提供一个doCall()方法来指定参数,以便以简短的形式调用闭包(没有显式地使用call())。但我不知道他们究竟希望如何工作。

Here's an explanation of call vs. doCall.