【发布时间】:2011-01-02 03:41:39
【问题描述】:
如果我在 Groovy 中定义一个闭包
def c = {println "foo"}
我可以使用任一方法调用它
c()
或
c.call()
AFAIK,这两个是相同的。但是,我最近发现了第三种方式
c.doCall()
call()和doCall()之间有什么区别
谢谢, 唐
【问题讨论】:
如果我在 Groovy 中定义一个闭包
def c = {println "foo"}
我可以使用任一方法调用它
c()
或
c.call()
AFAIK,这两个是相同的。但是,我最近发现了第三种方式
c.doCall()
call()和doCall()之间有什么区别
谢谢, 唐
【问题讨论】:
doCall 方法是调用 c() 或 c.call() 时调用的方法。
我发现了一个示例,声称它用于从内部调用闭包,但这似乎也适用于 call()。
documentation 表示您需要提供一个 doCall() 方法来指定参数,以便以简短形式调用闭包(无需显式使用 call())。但我不知道他们究竟希望它如何工作。
【讨论】: