Groovy中Closure参数的默认值

时间:2009-02-11 20:23:56

标签: groovy default-value closures

有没有办法在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"

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

我不相信Groovy有直接的方式来做你所要求的。

模拟这个的方法是“salute2”是一个闭包,它定义了它内部的另一个闭包(当前连接“salute”和“name”变量的闭包,其中“salute”是闭包参数)),然后调用该闭包,发送值“Hola”。