Groovy中闭包参数的默认值
在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
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中运行良好,正如您所期望的那样