From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-03-04T00:21:38+09:00 Subject: [ruby-dev:1572] Re: [BUG] String.dup けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :01565 ] the message: "[ruby-dev:1565] Re: [BUG] String.dup ", on Mar/03 14:53(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|きっと, new内のsuperに関するものですね? >そうです. > >|newの時だけ問題になるんですかね? > >一番問題になるのはnewでしょう.スーパークラスは通常のクラス >で,サブクラスで組み込みクラスにして,メソッドも置き換えると >いうような場合には問題が発生しうると思いますが,現在のrubyの >クラスの中で一番それに近そうなFixnumではそーゆーメソッドはな >いようです. ふむ. >|String < Primitive < Object >| >|のような実装して, Primitiveでガードするというのは? > >なかなか良いアイディアですね.思い付きませんでした.ただ, >Stringに関してはこれで良いんですけど,ThreadやProcなど数多く >の組み込みクラスをPrimitiveのサブクラスにするとか,拡張モジュー >ル内で定義されるクラスはどうするのか,とか考えるともうひとひ >ねり必要そうです. 今ってそうなっていなかったんですか? DATAがそのクラスだと信じていたので すが? それはともかく, 代案としては. 1. このままほっておく. Smalltalkでも同じような問題はありました. でも, 落ちや しなかったですが... 2. PrimitiveなクラスはObjectのサブクラスではなくして, Kernelを直接イン クルードする. 3. Primitiveなクラスのnewは再定義できなくする. 4. 最初の案とにていますが, Primitiveはクラスでなくてモジュールとし特異 クラスでextendする. 5. primitiveかどうかわかるフラグを各クラスにつける. このぐらいかなあ... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---