Webサービスのラッパーメソッドを記述したいのですが、サービスは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
私が達成したいのは、1つのパラメータを与えて1a
結果として。これは可能ですか(最も怠wayな方法で)?
現状のままではできない...コード
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' )
}
1つの選択肢は、最初のパラメーターとしてオプションのMapを持つことです。
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', 'b', parm2:'2nd') // prints 'a b 1 2nd'
明らかに、他の人々が魔法のmap
に何が入っているか、そしてデフォルトが何であるかを読者に任せるようにこれを文書化する;-)
引数をデフォルト値で使用できます。
def someMethod(def mandatory,def optional=null){}
引数「optional」が存在しない場合、nullになります。