From: shugo@... (Shugo Maeda) Date: 1998-03-10T00:39:01+09:00 Subject: [ruby-dev:1625] Re: [BUG] String.dup 前田です。 In message "[ruby-dev:1609] Re: [BUG] String.dup" 石塚圭樹 wrote: |>僕もsuperを呼べないようにするにはどうすればいいか、というのは |>考えたのですが、思いつきませんでした。 | |私はsuperが本質的な問題になっていると気づくまでだいぶかかってしまいま |した. 構造の互換性をチェックする方法に目がいっていたもので(^^;;; 僕の場合、 superを呼べないようにするにはスーパークラスでundefしないといけない → そうすると当然スーパークラスでもそのメソッドが使えない → それは困る という思考パターンですぐにあきらめてしまいました(^^; |(案2) メソッドそのものの属性として super_undefされているかどうかの状態 | を持たせる. super_undefすると、super_undefを呼んだクラスからのみ、そのメソッドが見え なくなるわけで、他の(そのメソッドを継承した)クラスからは見えるわけです よね。 ということは、メソッドの属性としてsuper_undefの情報を加えるには、その メソッドをsuper_undefしたクラスのリストを持たせる必要があるのではない でしょうか。 |>undefにはsuper_undefの効果はありませんよね? | |効果はないのですが, 元々の用途は上位クラスで定義されているメソッドを見 |えなくするための機能なので, undefをsuper_undefと再定義しても全然問題な |いと思うのですが? 僕は単純にundefは、そのクラスで、指定されたメソッドを未定義に するものだと理解していました。 実際undefは継承されたメソッドもそのクラスで定義されたメソッド も区別せずに未定義にするわけですし、今のundefの機能をsuper_undef と呼ぶのはちょっと抵抗があります。 -- 前田 修吾