繁体   English   中英

Groovy中关闭参数的默认值

[英]Default Value for Closure Parameters in 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"

您的代码可以按预期的那样与Groovy 1.6-RC2一起正常工作。

我不相信Groovy可以直接完成您所要求的事情。

模拟此方法的方法是将“ salute2”作为一个闭包,该闭包在其中定义另一个闭包(当前连接“ salute”和“ name”变量的闭包,其中“ salute”是闭包参数)),然后调用该关闭,发送值“ Hola”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM