メタプログラミングRuby 第5章 金曜日:コードを記述するコード その3
第5章、eval を使った実践編。
- まずはクラスマクロ attr_checked ではなくカーネルメソッドとして add_checked_attr(klass, meth) のようなメソッドを定義(手順1)
- eval でべったりとクラスを開いてメソッド定義。これはかなりの力技
- すぐに eval を使わずに class_eval と define_method を使った方法に書き替え。(手順2)これ eval を使った方法意味あったのかな。どちらも既に紹介された手法だし。
- instance_variable_get/set を使う
- 属性の検証方法をブロックで受け取るように改造(手順3)
- カーネルメソッドからクラスマクロとして定義
- Class もしくは Module のインスタンスメソッドとして定義
ここまでそんなに新しいトピックは出てきていませんね。
次はフックメソッドという手法が出てくるようです。