From: Takaaki Tateishi Date: 2002-08-04T20:30:31+09:00 Subject: [ruby-dev:17913] Re: [ruby-list:35696] Re: サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ? At Sun, 4 Aug 2002 18:18:56 +0900, > |Window自体はallocateで生成されてinitializeではサイズ/位置の変更を行う > |ので,生成されたWindowは無駄にはならないですよね? > > でもデフォルトサイズで生成されたウィンドウが一瞬画面にちらつ > いたりする可能性があるわけですよね。 はい,そうですが,この点でallocate/initializeに何をさせ るかということを判断しているわけではないと思っています. > allocateは「すべてのクラス」で「未初期化のRubyオブジェクト」 > を返すべきです。allocateはごくまれに生成されるインスタンスの > タイプや構造を知るためにも使われるので、できるだけなにもしな > い「空のRubyオブジェクト」を返したほうが良いと思います。 この部分をもう少し詳しく教えて下さい. 「空のRubyオブジェクト」というのは,中田さんの「使用不能」と同じ 感じだと思いますが,何を空のオブジェクト,使用不能状態と見なすの かは設計者/実装者に任されるということになるのでしょうか? たとえば,Data_Wrap_Struct してRubyのオブジェクトを作るものの場合 はもとのデータをどうやって生成するのかは実装者に任されてしまうと 思います. また,allocateで使用不能なオブジェクトを作ったことで,すべてのメ ソッドでその使用不能状態を検出する作業が必要になるなどの場合があ ると思います.このような場合でもallocateで使用不能状態を作るべき かでちょっと悩んでしまいます. どちらにしても,インスタンスのタイプや構造を知るというのは,具体 的にどのようなものでしょうか? たぶん,僕はallocateによる利点が どこにあるのかが具体的に分かっていので,何をさせるべきかで悩んで しまうのだと思います. -- Takaaki Tateishi