Rubyベストプラクティス 第3章 動的な機能を使いこなす その1

今日は第3章の前半です。動的な機能ということで、メタプログラミングRubyに通じるような内容になりそうです。

  • BlankSlate - メタプログラミングRubyで出てきましたね
    • 一旦見えなくしたメソッドをまた呼び出せるようにできる機能もある(UnbondMethod を保存してある)
  • API インタフェースの設計について
    • ブロックを instance_eval つきで呼ぶかどうかを Proc#arity で判定する
      • 個人的にはブロック引数の数程度でこんな重大な挙動の変化をして欲しくないですね
    • method_missing と send で動的ディスパッチ
    • "=" で終わらない setter メソッド(DSL っぽく。instance_eval 内で使うため)
  • 特異メソッドについて
    • class << obj; self; end …… 1.9 には singleton_class メソッドがありますよ
  • オープンクラスについて
  • アラウンドエイリアス

やっぱりほぼメタプログラミングRubyで出てきた話題でしたね。