21530


groovy における with メソッド？はいったいなにものなのでしょうか。

ExpandoMetaClass によってすべてのオブジェクトに追加定義された、  
(つまり、 `Object.metaClass.with = ｛｝`のような形で定義されている？)  
クロージャを引数にとるクロージャであると理解しているのですが、正しいでしょうか。

正しい場合、 Groovy の公式ソースはどこを見ればこのメソッドについて説明が書いてあるでしょうか。  
("Groovy with" で検索するとノイズしかでてこないので、困っています。)


CC BY-SA 3.0
2016-01-30T09:24:29.937
21506
2016-01-31T07:15:41.870
754
question
groovy
Groovy における with メソッドとは何者か


`with`メソッドのAPIドキュメントのURLは次のとおり。

<http://docs.groovy-
lang.org/latest/html/gapi/org/codehaus/groovy/runtime/DefaultGroovyMethods.html#with%28U,%20Closure%3CT%3E%29>

具体的な実装ソースは @argus 氏がコメントされているURLの先にあります。

with メソッドにかぎらず、[GDK](http://www.groovy-lang.org/groovy-dev-kit.html)
メソッドの大半はこの `org.codehaus.groovy.runtime.DefaultGroovyMethods` に実装されています。

`ExpandoMetaClass` と GDK メソッドの違いについては、以下の記述が参考になると思います。

[Rubyist Magazine - 他言語からの訪問 【第 2 回】 Groovy
(後編)](http://magazine.rubyist.net/?0037-GuestTalk#f04)

> Java 標準 API に対する Groovy 追加メソッド GDK (Groovy JDK)
> は、内部的にはカテゴリと等しい仕組みで実現されている。ただ、GDK は、Groovy
> コードから見るとコードの実行開始時には既にメソッドが追加されているし、プログラマからは与りしらない内部機構なので「動的メソッド追加」や「実行時メタプログラミング」には当らない。


CC BY-SA 3.0
2016-01-31T07:15:41.870
21530
2016-01-31T07:15:41.870
10492
21506
answer