Yokohama.groovy #9 に参加しました
2012/11/27 Yokohama.groovy #9 #yokohamagroovy - Togetterまとめ
最近このネタしか書いてませんが、今回も Yokohama.groovyです。
9回目をやってきました。
会場はいつものタネマキさん。
いつもよりもお客さん多めでにぎやかでした。
こちらは参加者 3 人 + ゲスト 1 人でいつも通りな感じ。
今回の範囲
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る
Category と Expando
Category も Expando も、元のクラスに全く手をつけずに簡単に拡張したり書き換えたりできるのがすばらしいです。
テスト時に Mock 的に使ったり、既存ライブラリの拡張したり、色々できそうです。
Expando は以前やった、map を使った Mock と似てますね。
遊びで Integer クラスを拡張して、fizzbuzz メソッドを実装してみました。*1
実装が愚直なのは置いといて、こういうのができちゃうのは楽しいですね。
@Category(Integer) class IntegerCategory { Integer fizzbuzz() { if (this % 15 == 0) { println "FizzBuzz" } else if (this % 5 == 0) { println "Buzz" } else if (this % 3 == 0) { println "Fizz" } else { println this } } } use(IntegerCategory) { (1..100).each { it.fizzbuzz() } }
invokeMethod と methodMissing
markupBuilder のソースコードを呼んだときにも出てきたアレです。
本の記述だけでは動作の違いがよく分からなかったので、togetter のうさみみさんの解説がありがたいです。
時間を見つけてソースコード読みます。
Groovy インアクションの MOP の説明も読んでみます。
その他
とあるきっかけで、何で Groovy やってんのかなーってことを考えましたが、一番はやってて楽しいからかなーと再確認。
そんな感じで、今回も楽しかったです。
*1:前に誰かが言ってたのを思い出したので