【问题标题】:Default Value for Closure Parameters in GroovyGroovy 中闭包参数的默认值
【发布时间】:2010-10-07 00:28:03
【问题描述】:

有没有办法在 Groovy 中使用带有闭包的默认参数值?

这是我迄今为止尝试过的:

class Persona {
    String name

    Persona( String name ) {
        this.name = name
    }

    String salute( String salute = "Hola" ) {
        salute + ' ' + this.name
    }

}

Persona.metaClass.salute2 = { 
    String salute = "Hola" ->
        salute + ' ' + name
}

p = new Persona( 'john' )

print p.salute()
print p.salute2()

这给了我以下结果:

Hola johnnull john

似乎对salute2() 的调用忽略了敬礼默认值"Hola"

【问题讨论】:

    标签: groovy default-value closures


    【解决方案1】:

    我不相信 Groovy 有直接的方法来做你要求的事情。

    模拟这种情况的方法是让“salute2”成为一个在其中定义另一个闭包的闭包(当前连接“salute”和“name”变量的闭包,其中“salute”是一个闭包参数),然后调用该闭包,发送值“Hola”。

    【讨论】:

      【解决方案2】:

      您的代码在 Groovy 1.6-RC2 中运行正常。

      【讨论】:

        猜你喜欢
        • 2017-03-11
        • 2013-08-02
        • 1970-01-01
        • 2011-11-16
        • 1970-01-01
        • 1970-01-01
        • 2020-04-21
        • 1970-01-01
        • 2016-09-29
        相关资源
        最近更新 更多