Значение по умолчанию для параметров замыкания в Groovy - PullRequest
0 голосов
/ 11 февраля 2009

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

2 голосов
/ 12 февраля 2009

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

0 голосов
/ 11 февраля 2009

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

Способ смоделировать это для "salute2", чтобы быть замыканием, которое определяет другое закрытие внутри него (то, которое в настоящее время объединяет переменные "salute" и "name", где "salute" является параметром замыкания)), и затем вызывает это закрытие, отправляя значение "Hola".

...