From: shugo@... (=?ISO-2022-JP?B?GyRCQTBFRBsoQiAbJEI9JDhjGyhC?= / maeda shugo) Date: 1997-08-20T16:24:24+09:00 Subject: [ruby-list:3731] Re: new sync.rb release 前田です。 On Wed, 20 Aug 97 12:17:36 +0900 In message "[ruby-list:3711] Re: new sync.rb release" keiju@bc.mbn.or.jp (石塚圭樹) wrote: |1. includeをoverrideするのはちょっと... | |以前, extendと同様にincludeもフックが欲しいという話しがあったのですが, |結局採用になりませんでした. このような大きな変更にはrubyの作者の意向に |したがった方が良いんじゃないかなあ... という思いがあります. やっぱりそうですよね。 |class Spokesperson < String | Sync_m.included_to self | # or inclued Sync_m.includable | |こんな感じのインターフェイスになってしまいますが... うーん、ふつうにincludeしただけで動くのが理想なのですが...。 [ruby-list:3725]のincludeもextendみたいにする案に一票(^^; |2. superが使える |前田さんのプログラムは, include時にnewをoverrideしていますが, ここまで |は必要ないんじゃないでしょうか? | |通常, インスタンスの初期化時に, 上位クラスでの初期化を行いたい場合は |superを使うことになっているので, superで初期化できるようになっていれば |文句はないと思います. そう思ったのですが、自分のコードみたらsuper呼んでないのがけっこう あったりしまして(^^; |class Spokesperson < String | Sync_m.included_to self | | def Spokesperson.new | super.new.initialize | end | # String newはinitializeしてくれないらしいので追加, 一般クラスなら | # ば必要なし | | #def ininitalize | # super | #end | # newをoverrideしているので必要なし. 一般クラスの場合こちらが必要. |end | |というインターフェイスでは不満でしょうか? そうですね、newを再定義したりするとなんか不安ですし、こちらの 方がよさそうな気がします。 -- 前田 修吾