加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy方法与可选参数

发布时间:2020-12-14 16:37:40 所属栏目:大数据 来源:网络整理
导读:我想为webservice编写一个包装方法,该服务接受2个强制性和3个可选参数。 为了有一个较短的例子,我想得到以下代码的工作 def myMethod(pParm1='1',pParm2='2') { println "${pParm1}${pParm2}"}myMethod();myMethod('a')myMethod(pParm2:'a') // doesn't wo
我想为webservice编写一个包装方法,该服务接受2个强制性和3个可选参数。

为了有一个较短的例子,我想得到以下代码的工作

def myMethod(pParm1='1',pParm2='2') {
    println "${pParm1}${pParm2}"
}

myMethod();
myMethod('a')
myMethod(pParm2:'a') // doesn't work as expected
myMethod('b','c')

输出为:

12
a2
[pParm2:a]2
a2
bc

我想要实现的是给出一个参数,并得到1a作为结果。
这是可能的(以最懒惰的方式)?

解决方法

无法做到这一点…代码

def myMethod(pParm1='1',pParm2='2'){
    println "${pParm1}${pParm2}"
}

基本上使groovy创建以下方法:

Object myMethod( pParm1,pParm2 ) {
    println "$pParm1$pParm2"
}

Object myMethod( pParm1 ) {
    this.myMethod( pParm1,'2' )
}

Object myMethod() {
    this.myMethod( '1','2' )
}

另一种选择是将可选地图作为第一个参数:

def myMethod( Map map = [:],String mandatory1,String mandatory2 ){
    println "${mandatory1} ${mandatory2} ${map.parm1 ?: '1'} ${map.parm2 ?: '2'}"
}

myMethod( 'a','b' )                // prints 'a b 1 2'
myMethod( 'a','b',parm1:'value' ) // prints 'a b value 2'
myMethod( 'a',parm2:'2nd')    // prints 'a b 1 2nd'

显然,记录这一点,所以其他人知道魔法地图中有什么,默认是什么留给读者;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读