From: shugo@... (Shugo Maeda) Date: 1998-03-04T18:00:20+09:00 Subject: [ruby-dev:1580] Re: [BUG] String.dup 前田です。 In message "[ruby-dev:1578] Re: [BUG] String.dup" Yukihiro Matsumoto wrote: ||2. PrimitiveなクラスはObjectのサブクラスではなくして, Kernelを直接イン || クルードする. | |これはできません.というのもインスタンスがT_OBJECT以外の構造 |をもつクラスはクラス階層の中に組み込まれているからです.たと |えば,NumericはComplexなどのスーパークラスですからObjectのサ |ブクラスである必要がありますが,FloatやBignum,Fixnumのスーパー |クラスでもあります.これらをNumericのサブクラスから外すのは |望ましくないと思います. 最初に石塚さんがおっしゃっていたように、 Object --- Primitive -+- Array | +- Hash . . . +- Data としておいて、data_object_allocはDataのサブクラスしか受けつけ ないようにするというのはどうでしょう。 拡張モジュールを全部書き直さないといけないのが難ですが、 cDBM = rb_define_class("DBM", cObject); などとなっているのを、 cDBM = rb_define_class("DBM", cData); とするだけなので、それほどコストはかからないと思います。 -- 前田 修吾