From: matz@... (Yukihiro Matsumoto) Date: 1998-09-02T13:32:12+09:00 Subject: [ruby-list:9414] Re: Delegator まつもと ゆきひろです In message "[ruby-list:9391] Re: Delegator" on 98/09/01, ttate@jaist.ac.jp writes: |立石です。 |こちらは、DelegateClass(Foo)によって生成させた |クラスにinitializeを再定義する必要があるため |DelegateClass(Foo).new という書き方はできない |ようです。 あ,そうか.DelegateClassはデフォルトでは転送先を明示的に指 定する仕様でしたね.こういう感じでないと foo = DelegateClass(Foo).new(Foo.new) def foo.say ... super end |aliasを使ってごまかすよりもこちらの方法で |なんとか initialize 再定義の手間を省けないか考えた |のですが次のような感じの修正はいかがでしょう? うーむ,これだと現在の「転送先を明示的に指定する」仕様から 「転送先を勝手に生成する」仕様に変更してることになりますよね. しかも,逆(既存のオブジェクトを転送先にすること)は出来ないと いうことも意味します. foo = DelegateClass(Foo).new とできるのは便利ですが,そこまでの変更は受け入れにくいです. # とはいえ,書いた本人も忘れている仕様にこだわる必要があるの # かってツッコミはアリでしょうけど.^^;;; たとえば def WrapClass(superclass) klass = DelegateClass(superclass) klass.module_eval <