2010-01-06 54 views
12

如果我在Groovy调用Groovy闭

限定的封闭
def c = {println "foo"} 

余可使用任一

c() 

c.call() 

AFAIK调用它,这两个是相同的。不过,我最近发现的第三种方式

c.doCall() 

是否有call()doCall()

谢谢, 唐

回答

11

的doCall方法是,当你调用C什么被调用()或C之间的任何差别。呼叫()。

我找到了一个声明它用来从内部调用闭包的例子,但是这似乎也适用于call()。

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

Here's an explanation of call vs. doCall.

+2

你能解释一下(也许举个例子),你的意思是 什么“你需要提供一个doCall()方法以调用在短期形式关闭指定的参数” – 2010-01-06 18:16:44