Japanese Closures Add comment to Wiki View in Wiki Edit Wiki page Printable Version

クロージャとは



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

シンプルな例



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



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

パラメータ



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



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

暗黙の変数



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

It



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

this, owner, delegate



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



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



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

例:

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



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



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

さらに詳しい情報



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

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

 

Search

Results of your search request can come from various sources: the Groovy website itself, the JIRA issues, the API documentation, as well as a few other interesting Groovy-related blogs.

  By  -  pages  -  views  - last modified