2012/11/27 Yokohama.groovy #9 #yokohamagroovy

20121127 vol.09 · yokohamagroovy/support Wiki https://github.com/yokohamagroovy/support/wiki/20121127-vol.09 ハッシュタグ: #yokohamagroovy 続きを読む
2
しんや @shinyaa31

#yokohamagroovy 本日のYokohama.groovy は第9回。20:00~22:00 横浜タネマキで開催予定です。 http://t.co/NgDV5C8s 『プログラミングGroovy』4.2 Groovy JDK(GDK)、5.2 メタプログラミング等。

2012-11-27 10:30:13
しんや @shinyaa31

@grimrose @y_sumida タネマキ着20:45位になりそうです。通常通り本編始めてしまってください。自分も電車内でゆるりと始めます。 #yokohamagroovy

2012-11-27 19:52:36
とーます @grimrose

Object#useとしてGDKが拡張しているためCategoryが使える http://t.co/LWYTQEXI #yokohamagroovy

2012-11-27 20:04:16
しんや @shinyaa31

#yokohamagroovy 着いた。今日は横浜タネマキさん来られている人が多いですね。

2012-11-27 20:53:25
しんや @shinyaa31

#yokohamagroovy メタプログラミングが出来ると何が嬉しいか。について聞く。

2012-11-27 21:05:46
しんや @shinyaa31

#yokohamagroovy 次いでexpando(エクスパンドゥー)。状況に応じたモック的な扱い方?

2012-11-27 21:06:35
しんや @shinyaa31

#yokohamagroovy メタプログラミング:カテゴリ(category)の使用例。GExcelAPIのソースコード。  / https://t.co/0k8qghhr

2012-11-27 21:08:05
Yuki Sumida @y_sumida

invokeMethodとmethodMissingの違いについて確認中 #yokohamagroovy

2012-11-27 21:23:12
しんや @shinyaa31

#yokohamagroovy 第9回終了。invokeMethodとmethodMissingの違いについて色々悩んだりし通しだった気がw

2012-11-27 22:02:47
とーます @grimrose

#yokohamagroovy メソッドとしてのinvokeMethodと、metaClassのinvokeMethodの動きの違い — Gist https://t.co/LcSxxXNl

2012-11-27 22:06:45
とーます @grimrose

metaClassの方ですね。RT @shinyaa31: #yokohamagroovy メタプログラミング:カテゴリ(category)の使用例。GExcelAPIのソースコード。  / http://t.co/3LqFKq2d

2012-11-27 22:12:10
とーます @grimrose

@nobeans GExcel.groovyだけしか見ていなかったので、助かります。ちょうど青い本のメタプログラミングの箇所をやっていたので、参考にさせていただきました。

2012-11-27 22:17:36
しんや @shinyaa31

#yokohamagroovy 年内最後の第10回は三週間後の12/18(火) 20:00~22:00、場所は毎度の横浜タネマキにて。『プログラミングGroovy』 5.3 AST変換からです。書籍写経も次回が一応最後となります。

2012-11-27 23:04:34
とーます @grimrose

@kyon_mm 前者と後者で動きが違うのはなぜでしょうか?

2012-11-27 23:48:41
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@grimrose まず、invokeMethodはGroovyObjectとMetaClassに定義されています。で、Groovyで定義したClassというのは明示的にClassGeneratorを使わない限りはGroovyObjectのサブクラスになります。

2012-11-28 00:04:08
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@grimrose GroovyObjectのinvokeMethodはデフォルトではMetaClassのinvokeMethodを呼ぶようになっています。そこで、インスタンスのMetaClassやクラスのMetaClassについて対象のメソッドを探索します。

2012-11-28 00:05:28
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@grimrose どのMetaClassにもメソッドが存在しない場合はMethodMissingとなります。このばあいにmethodMissingがコールされる事になります。

2012-11-28 00:07:11
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@grimrose MetaClassに存在する場合はMetaClassのinvokeMethodを経由して対象のメソッドがコールされることになります。

2012-11-28 00:08:02
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@grimrose 他にもClosureの場合や、Javaクラスの場合、Interceptableを継承している場合などがあります。で、これらを経ながらいくつかリダイレクトというか、うまい具合に解決をするわけです。

2012-11-28 00:11:31