メタプログラミングRuby 第3章 水曜日:ブロック その1

メタプログラミングRuby

メタプログラミングRuby

第3章に突入です。この既知の内容が多いので飛ばしていきます。

  • スコープのことをこんなにこと細かに説明しているのはあまり見たことがないかも
  • いろいろ語彙が出てきました
    • スコープゲート - class, module, def でスコープがわかれること
    • フラットスコープ - Class.new{}, Module#define_method
    • スコープの共有化 - クロージャの典型的な用例(でも実際あまりやらないですよね)
    • コンテキスト探査 - instance_eval でオブジェクトをいじること
    • クリーンルーム
      • クリーンルームDSL であるオブジェクトのメソッドを組み込みのコマンドのようにみせる手法のことかな?
  • どれも語彙としては初耳だけどやっていることは馴れ親しんだ Ruby のプログラミング。そうか、いままでやっていたことはメタプログラミングだったんだ。

ただわたしはフラットスコープにはあまりブロック付き Class.new は使わずに、Class.new/Module.new で無名クラス/モジュールを作成して module_eval するほうが多いですね、なぜか。

明日は 3.5 呼び出し可能オブジェクトからです。