Groovy中闭包参数的默认值

Groovy中闭包参数的默认值,groovy,default-value,closures,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

在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

似乎对
salle2()
的调用忽略了sallet默认值
“Hola”

我认为Groovy没有一种直接的方法来完成您的请求


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

您的代码在Groovy 1.6-RC2中运行良好,正如您所期望的那样