- 普通のクロージャ定義
クロージャと同じスコープの変数を参照できる
groovy:000> name = "taro" ===> taro groovy:000> p = { println "Hello, ${name}" } ===> groovysh_evaluate$_run_closure1@647909a7 groovy:000> p() Hello, taro ===> null groovy:000> name = "hanako" ===> hanako groovy:000> p() Hello, hanako
- パラメータを渡すクロージャの場合
こんな感じ。引数を囲むカッコはパラメータを渡すクロージャの場合は省略できる。
groovy:000> p = { name -> println "Hello, ${name}" } ===> groovysh_evaluate$_run_closure1@5e4aaf28 groovy:000> p("jiro") Hello, jiro ===> null groovy:000> p "saburo" Hello, saburo ===> null
- パラメータを複数渡す
引数が足りないとエラー。多くてもエラー。
groovy:000> p = { n1,n2,n3 -> println "Hello,${n1} ${n2} ${n3}" } ===> groovysh_evaluate$_run_closure1@2e3f7cd9 groovy:000> p("john","paul","george") Hello,john paul george ===> null groovy:000> p("ringo") ERROR groovy.lang.MissingMethodException: No signature of method: groovysh_evaluate$_run_closure1.doCall() is applicable for argument types: (java.lang.String) values: {"ringo"} at groovysh_evaluate.run (groovysh_evaluate:2) ...