メタプログラミングRuby 第2章 火曜日:メソッド その1

メタプログラミングRuby

メタプログラミングRuby

第2章に突入です。

  • 小話部分だけど経費の上限 99ドルはないだろー。この本はこういう細部がおもしろい
  • DataSource でクラス名が DS はひどい
  • 動的メソッド
    • Object#send でメソッドを動的に呼ぶ(動的ディスパッチ)
      • send で private メソッドが呼べてしまうことはここのコラムで触れられてました
      • なお 1.9 で send が private を呼べなくするという議論はあって、private メソッドを呼べる funcall メソッドを追加して対処するというものでしたが、これはボツになって実際には send の挙動はそのままに、public_send が追加されるという保守的な変更に留まりました
    • Module#define_method でメソッドを動的に定義する
    • 以上2つの合わせ技でデータからプログラムを生成する
    • さらに DS のオブジェクトから methods でメソッド名を取り出して定義するメソッド名も自動検出

今日はここまで。次は method_missing を使った方法です。