From: shugo@... (Shugo Maeda) Date: 1998-03-10T11:53:59+09:00 Subject: [ruby-dev:1637] Re: [BUG] String.dup 前田です。 In message "[ruby-dev:1628] Re: [BUG] String.dup" 石塚圭樹 wrote: |>ということは、メソッドの属性としてsuper_undefの情報を加えるには、その |>メソッドをsuper_undefしたクラスのリストを持たせる必要があるのではない |>でしょうか。 | |undefがやっている方法と同じことをすれば良いと思います. そのクラスのメ |ソッドとして, super_undefされた(のフラグの立っている)メソッドを登録す |れば良いでしょう. そうするとそのクラスで再定義された場合は...と考えたんですが、 フラグを引き継げばよいのかな...。 で、super_undefされたメソッドが呼ばれた時はSCOPEにその情報を 持たせて、そのメソッドの実行中はsuperが呼べないようにする。 あ、他のメソッドが呼ばれるとまずいから、単純にSCOPEに持たせる だけではだめですね。 |1. 上位のメソッドを隠す機能(super_undef) |2. そのクラスにあるメソッドを削除し, かつ(1)を行なう機能 | (remove_method+super_undef) | |というわけで, super_undefの方がより原始的な機能を提供しているといえる |と思います. モデルとしてはそうなのかもしれませんが、実装となるとsuper_undefの 方が大変そうなのが面白いですね(^^; -- 前田 修吾