tnodaの日記: 「メタプログラミング Ruby 」読書ノート - 第2章 火曜日: メソッド
日記 by
tnoda
重複コードを排除する方法について、いくつか学ぶ。
1) 動的メソッド
a) 動的ディスパッチ ... Object#send()
b) 動的メソッド ... Method#define_method()
2) ゴーストメソッド
a) Object#method_missing()
- デフォルトでは、NoMethodError になる
- よくあるバグ ... method_missing() 中で未定義メソッドを
呼び出すと無限ループ
b) 動的プロキシ
- オブジェクトがゴーストメソッドを受けとり、
何らかのロジックを適用してから、他のオブジェクトに転送
c) respond_to?() のオーバーライド
- ゴーストメソッドへの対応
3) ブランクスレート ... メソッド名衝突対応
a) Module#undef_method()
b) BasicObject
「メタプログラミング Ruby 」読書ノート - 第2章 火曜日: メソッド More ログイン