调用 Groovy 闭包

Posted

技术标签:

【中文标题】调用 Groovy 闭包【英文标题】:Invoking Groovy closures 【发布时间】:2011-01-02 03:41:39 【问题描述】:

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

def c = println "foo"

我可以使用任一方法调用它

c()

c.call()

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

c.doCall()

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

谢谢, 唐

【问题讨论】:

【参考方案1】:

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

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

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

Here's an explanation of call vs. doCall.

【讨论】:

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

以上是关于调用 Groovy 闭包的主要内容,如果未能解决你的问题,请参考以下文章

调用 Groovy 闭包

Groovy04_闭包

11-Groovy-Closures(闭包)和Ranges(范围)

Groovy闭包 Closure ( 闭包类 Closure 简介 | 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法 )

Groovy闭包 Closure ( 闭包类 Closure 简介 | 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法 )

Groovy闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )