From: matz@... (Yukihiro Matsumoto) Date: 1999-06-10T19:54:26+09:00 Subject: [ruby-list:14986] Re: 初期化メソッドの追加 まつもと ゆきひろです In message "[ruby-list:14985] Re: 初期化メソッドの追加" on 99/06/10, ARIMA Yasuhiro writes: || 結局initializeってのは「紳士協定」なんでルールに従わない奴が || いるとうまく行かないんですよね。 | |拡張ライブラリの原則だと思っていたので、これはちょっと驚きです。 というのはですね、initializeはオブジェクトが生成されてから呼 ばれるので遅すぎることがあるんですよね。たとえばArrayクラス はnewメソッドの引数として大きさを指定できます。オブジェクト そのものの性質なのでinitializeが呼ばれる前に引数の解析と大き さの設定が行われます。 IOの類もそうで、initializeが呼ばれる前にすでに引数を使って openされてしまっています。引数チェックが先なのでinitializeに 余分の引数を渡すこともできません。 結局、安心してinitializeを使えるオブジェクトっていうのは、組 み込みでないクラスってことになりますねえ。 有馬さんのメールをもらってから、全部一貫して initialize で処 理するようにはできないだろうかと考えてみたのですが、まあ大改 造が必要になるのはともかくとして、パフォーマンス上の問題が気 になるのと、それだけのことをしてメリットがどれだけあるかとい うことを考えるとやる気がなくなってしまいました。 当面はこのままでいきます。今後、initializeが呼ばれないクラス についてはドキュメントでそれと明示する方向で改善しようと思い ます。 まつもと ゆきひろ /:|}