Reputation: 63635
Is there some way to use default parameters values with closures in Groovy?
This is what I tried so far:
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()
which gives me the following result:
Hola johnnull john
It seems like the call to salute2()
is ignoring the salute default value "Hola"
.
Upvotes: 0
Views: 1880
Reputation: 15245
I don't believe Groovy has a direct way to do what you're asking.
The way to simulate this is for "salute2" to be a closure that defines another closure inside it (the one that currently concatenates the "salute" and "name" variables, where "salute" is a closure parameter)), and then calls that closure, sending the value "Hola".
Upvotes: -1