调用Groovy闭包

Dón*_*nal 16 groovy closures

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

def c = {println "foo"}
Run Code Online (Sandbox Code Playgroud)

我可以使用其中任何一个来调用它

c()
Run Code Online (Sandbox Code Playgroud)

要么

c.call()
Run Code Online (Sandbox Code Playgroud)

AFAIK,这两个是相同的.但是,我最近发现了第三种方式

c.doCall()
Run Code Online (Sandbox Code Playgroud)

call()和之间是否有任何区别?doCall()

谢谢,唐

Nat*_*hes 14

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

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

文件说,你需要提供一个doCall()方法以调用在短期形式关闭指定的参数(不使用显式调用()).但我不知道他们究竟希望如何工作.

这是对call和doCall的解释.

  • 你能解释(也许举一个例子)你的意思是"你需要提供一个doCall()方法来指定参数,以便以简短形式调用闭包" (2认同)