【基本】
Closure func1 = { println "Hello closure." } assert func1 instanceof groovy.lang.Closure //True func1.call() // Hello closure. func1() //Hello closure.
【引数有と引数無】
//引数有 Closure func2 = { target -> println "Hello $target."} clos2.call("hoge") //Hello hoge. //引数無、クロージャは引数を定義しなかった場合、暗黙の引数itが定義されているとみなされる Closure func3 = {println "Hello $it."} func3.call('world') //Hello world. func3.call() // Hello null.(itのデフォルト値はnullのため) //完全引数無としたい場合 Closure func4 = { -> println "Hello world."} func4.call() //Hello world. func4.call("world") //MissingMethodException:No signature of methodとなる //引数を複数かつ型定義 Closure func5 = { String s, int i -> println "s=$s, i=$i" } func5.call('Hello', 5) //s=Hello, i=5
def ab(Boolean expr, Closure func) { if (expr) { func.call(expr) } } Closure func = {println "expr=$it"} ab(true, func) //expr=true //Closure funcを定義しない場合 ab(true, {println "expr=$it"})//expr=true //メソッドの最後の引数がクロージャの場合の略記方法 ab(true) {println "expr=$it"}//expr=true
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る