From: matz@... (Yukihiro Matsumoto) Date: 1998-03-10T16:06:47+09:00 Subject: [ruby-dev:1648] Re: implementation of super_undef (Re: [BUG] String.dup) まつもと ゆきひろです In message "[ruby-dev:1647] Re: implementation of super_undef (Re: [BUG] String.dup)" on 98/03/10, Shugo Maeda writes: |前田です。 |それならnewの再定義の問題はsuper_undefで対応した方が問題は |少ないと思うのですが、super_undefを単独でundefと分離して |一般ユーザに公開する必要はないような気がします。 |# super_undefを単独で使うのは今回のような特殊なケースだけ |# ですよね? 多分そうだと思います. super_undefを公開するかどうか super_redefはどうするか undefの挙動は今まで通り or super_undef + remove_method? newで暗黙にsuper_undefするか,明示的なsuper_undefを求めるか などについて検討する必要がありますね. |super_undefするタイミングは、 | |void |rb_define_singleton_method(obj, name, func, argc) | VALUE obj; | char *name; | VALUE (*func)(); | int argc; |{ | if (strcmp(name, "new") == 0) | rb_super_undef_method(rb_singleton_class(obj), name); | rb_define_method(rb_singleton_class(obj), name, func, argc); |} | |となるのでしょうか? これではだめでしょうね.もし,暗黙にsuper_undefするにしても, 単に「名前がnewの特異メソッド」というだけではダメで, obj.kind_of? Module が成立する必要があります. まつもと ゆきひろ /:|)