Skip to end of metadata
Go to start of metadata

クロージャとは


Groovyのクロージャは「コードブロック」やメソッドポインタのようなものです。ひと固まりのコードとして定義され、後になって実行されます。

シンプルな例


上の例で、クロージャが定義されたときではなく、 呼ばれた ときに "hello!" が出力されていることに注意してください。


クロージャは、定義されたスコープ内で変数に「束縛」することもできます:

パラメータ


クロージャのパラメータは、以下のように -> トークンの前に並べられます:


クロージャ定義が一個以下のパラメータしかとらない場合、-> トークンは任意で省略可能です。

暗黙の変数


クロージャの内部では、特別な意味を持ついくつかの変数が定義されます:

It


単一の引数をとるクロージャでは、以下のようにパラメータ定義を省略することができます:

this, owner, delegate


this : Javaと同じように、this はそのクロージャ定義を含むクラスを指す

owner : そのクロージャを含むオブジェクト (this またはそのクロージャを囲んでいるクロージャ)

delegate : デフォルトでは owner と同じだが変更可能。例: builderExpandoMetaClass

例:

メソッド引数としてのクロージャ


メソッドの最後のパラメータがクロージャの場合、そのクロージャは以下のようにインラインで定義可能です:


上の例で collect メソッドは ListClosure を引数にとります。同じことを次のように書くこともできるでしょう(より冗長になりますが):

さらに詳しい情報


Groovyでは java.lang.Object を拡張して、クロージャを引数にとるメソッドを数多く追加しています。クロージャの実用的な利用法については GDK Extensions to Object を参考にしてください。

以下も参照してください:

  • No labels