Как пропустить параметр со значениями по умолчанию в Groovy? - PullRequest
0 голосов
/ 05 июля 2018

Мой метод Groovy имеет 3 параметра, а последние 2 имеют значения по умолчанию. Я хочу пропустить второй параметр и предоставить значения только для первого и третьего параметров, например ...

 def askForADate(girlsName, msg = 'Will you go out with me?', beg = 'pretty please!!') {
    println "$girlsName, $msg $beg!"
 }

askForADate('Jennifer',,'Because I love you!')

Прямо сейчас это печатает ...

 Jennifer, Because I love you! pretty please!!!

Похоже, что оно вставляет значение, которое я передаю для третьего параметра, во второй.

Как это исправить?

1 Ответ

0 голосов
/ 06 июля 2018

Как сказал доэлери, вам нужно написать две версии этого метода. Если вы не будете использовать какую-то отличную доброту с именованными аргументами!

def askForADate(Map op, girlsName) {
    println "$girlsName, ${op.get('msg', 'Will you go out with me?')} ${op.get('beg', 'pretty please!!')}!"
}

askForADate(beg: 'Because I love you!', 'Jennifer')

Распечатывает: Дженнифер, ты пойдешь со мной? Потому что я люблю тебя !!

Подробнее см. http://mrhaki.blogspot.com/2015/09/groovy-goodness-turn-method-parameters.html

Это решение имеет явный недостаток - переупорядочивать аргументы, так как теперь имя девочки является последним в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...