前田です。 keiju / bc.mbn.or.jp (石塚圭樹 ) wrote: |マクロは, 関数呼出側のコンテキストで処理を進めるところに意味があると思 |うのですが, マクロではなくてもいいのでそういう機能をrubyで付加すること |はできないですかねえ? つまり, 呼出側のbindingを呼び出され側で参照する |ことができると色々便利なのですが... そうすると, マクロはなくても同等な |機能を通常の関数で実現できる(苦労のレベルは別として)と思うのですが, い |かがでしょう? これは、 def foo(b) eval "p bar", b end bar = "this is a local variable." b = binding foo(b) と等価なことが def foo eval "p bar", caller_binding # caller_bindingは呼び出し側のbinding情報を持つ擬似変数 end bar = "this is a local variable." foo みたいにできれば...ということでしょうか。 あんまり関係ないかもしれませんが、with_bindingみたいな メソッドがあると便利かなと思います。 これを使えば上のは def foo with_binding caller_binding do p bar end end bar = "this is a local variable." foo と書けますよね。 # evalだと長くなるとちょっと見にくいような気がするので...。 # でもあまり使わないかな。 -- 前田 修吾