2012-09-25 6 views
19

1つの引数(私がitを参照しています) を参照するクロージャを定義したいときに、別の引数をクロージャに渡したいことがあります。 どうすればいいですか?オプション引数付きのGroovy Closure

答えて

32

あなたは(NULLなど)のデフォルト値への第二引数を設定できます

def cl = { a, b=null -> 
    if(b != null) { 
    print "Passed $b then " 
    } 
    println "Called with $a" 
} 

cl('Tim')   // prints 'Called with Tim' 
cl('Tim', 'Yates') // prints 'Passed Yates then Called with Tim 

別のオプションは、可変引数リストので、同じようbを作るために次のようになります。うまくいけば、この

def cl = { a, ...b -> 
    if(b) { 
    print "Passed $b then " 
    } 
    println "Called with $a" 
} 

cl('Tim')     // prints 'Called with Tim' 
cl('Tim', 'Yates')   // prints 'Passed [Yates] then Called with Tim 
cl('Tim', 'Yates', 'Groovy') // prints 'Passed [Yates, Groovy] then Called with Tim 
+0

これは簡単でした;)thanx – Moonlit

+0

@ user1291235問題はありません:-)別の可能な解決策を追加しました –

+0

そしてクロージャーボディを変更したくない場合は、最初の引数 'it'に名前をつけることができます:-) – Ayman

1

助けてください

​def clr = {...a -> 
    print "Passed $a then " 
    enter code here 

} 

​clr('Sagar') 
clr('Sagar','Rahul') 
関連する問題