2009-02-11 3 views
0

Есть ли способ использовать значения параметров по умолчанию с закрытием в Groovy?Значение по умолчанию для параметров закрытия в 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

Ваш код работает нормально, как вы ожидали, с Groovy 1.6-RC2.

+0

Вы правы, groovy 1.6.0 отлично работает! – opensas

-1

Я не верю, что Groovy имеет прямой способ делать то, что вы просите.

Способ имитации заключается в том, что «salute2» является замыканием, которое определяет другое закрытие внутри него (которое в настоящее время объединяет переменные «салют» и «имя», где «салют» является параметром закрытия)). , а затем вызывает это закрытие, отправив значение «Hola».

Смежные вопросы