groovyでは、{|<仮引数リスト>| <定義コード>} という構文で、無名の関数のようなものを定義できます。これをクロージャと呼んでいるみたい*1。
// 関数とクロージャdef sumFunction(x, y) { x + y } // 関数定義
println sumFunction(2, 3)sumClosure = {|x, y| x + y } // クロージャを変数に代入
println sumClosure(2, 3)println ({|x, y| x + y }(2, 3)) // クロージャに直接引数を渡す
5
5
5
「無名の関数のようなもの」を形式的(理論的)に表したものがラムダ式で、だいたいの感じは:
クロージャ {|<仮引数リスト>| <定義コード>}
↑
↓
ラムダ式 λ<仮引数リスト>.<定義コード>
(続く)
*1:groovy-1.0-beta-9でのハナシ。最近、構文が変わったようです。