如何在Groovy中跳过具有默认值的参数?

时间:2018-07-05 17:31:17

标签: groovy

我的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 :(得分:2)

正如doelleri所说,您需要编写两个版本的thie方法。 除非您在命名参数中使用一些古怪的优点!

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

此解决方案具有明显的缺点,因为现在女孩名排在最后,所以对参数重新排序。