けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :05648 ] the message: "[ruby-list:5648] Re: undef method
", on Dec/12 11:55(JST) matz / netlab.co.jp (Yukihiro Matsumoto) writes:

>まつもと ゆきひろです

>|undefしたメソッドをもう一度生かすにはどうしたら良いのでしょうか?
>
>undefは「まったくなかったことにする」操作ですからねえ.
>
>これは
>
>  * aliasで別の名前で保存しておき
>  * undef
>  * 終ったら再びaliasで戻す
>
>というやり方でできるかもしれません.実装上何回も繰り返すこと
>はお勧めしませんが.

うーん. この方法はエレガントではないですよねえ...

ところで何度も何で繰り返しちゃ駄目なんだろう?

>別の方法としては
>
>  * 1.1b1からあるModule#remove_methodを使う
>
>というものがあります.この場合
>
>   # 一時的に別の定義を得意メソッドに定義する
>   eval 'class << f
>          def foo; print "foo\n"; end
>        end'
>
>   # 元の定義に戻したい...
>   eval 'class << f
>          remove_method :foo
>         end'
>
>という感じですかね.

おお. それがやりたいことでした...

># 1.1b1ではキャッシュの不整合が起きるかも

ん? それは困るなあ...

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---