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

如何在Groovy中跳过具有默认值的参数?,groovy,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, Be

我的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!!!
所以它看起来像是把我传递给第三个参数的值插入到第二个参数中


如何解决这个问题?

正如doelleri所说,您需要编写该方法的两个版本。 除非您将groovy的优点用于命名参数

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')
詹妮弗,你愿意和我一起出去吗?因为我爱你

有关更多详细信息,请参阅


此解决方案的明显缺点是对参数重新排序,因为现在女孩的名字是最后一行。

您需要为第二个参数编写一个双参数版本或传递null/空白字符串。