调用Groovy闭包函数

17

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

def c = {println "foo"}

我可以使用以下任意一种方式调用它:

c()
或者
c.call()

据我所知,这两种方法是相同的。然而,最近我发现了第三种方式。

c.doCall()

call()doCall() 之间有什么区别吗?

谢谢, Don

1个回答

16

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

我发现有一个例子声称它用于从内部调用闭包,但使用call()似乎也可以实现。

文档说,您需要提供doCall()方法来按顺序指定参数以便在短形式(不显式使用call())中调用闭包。但我不知道他们期望它如何工作。

这里有关于call vs. doCall的解释。


2
你能解释一下(或者举个例子),你所说的“你需要提供一个doCall()方法来指定参数,以便在短形式中调用闭包”是什么意思吗? - Dónal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接