まつもと ゆきひろです

In message "[ruby-dev:1591] Re: [BUG] String.dup"
    on 98/03/05, 石塚圭樹 <keiju / rational.com> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|そうですね. クラスにするのはまずいですね... Primitiveをモジュールにす
|ればこの問題は解決すると思います.
|
|           Primitive--+
|                      |
|Object --- Numeric -+-+- Float
|                    |
|                    +- Complex     
|
|というように. 

ええ,それは考えたんですけど,

|>世の中にある全部の拡張モジュールを書き換える必要があるわけで
|>すからできるだけAPIは変えたくないんですよねえ.
|
|この問題は解決してないですよね...

こっちの問題が解決しないんで採用したくないんですよねえ.

|# でも, 本来クラスが持つべき情報を持っていないところに問題があると思い
|# ますけどね. 

いや,まあそれをいえばその通りなんですけど,この情報ってこう
いう例外的な時にしか役に立たない情報なんですよねえ.

|現在オブジェクトに構造の情報が付加されるのは,
|
|    OBJSETUP(obj, klass, type_id);
|
|のところですよね? このマクロ内で, 
|
|  klass->type_id != type_id
|
|だったら例外を発生させるというのはどうでしょう? 普通, type_idが異なっ
|ていたら, オブジェクトの構造に互換性がないと思って良いとおもうのですが...

klass->type_id ってなに? クラスのTYPE()はいつも T_CLASS で
すけど.また,クラスの構造体にはインスタンスの type_id を格
納するスペースは残ってないですし,またもし全てのオブジェクト
のサイズを拡大してそのスペースを用意したとしても,今度はいつ
どうやってインスタンスのtype_idを格納するか,という問題が残
ります.

                                まつもと ゆきひろ /:|)