[#1553] [BUG] String.dup — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#1557] IO#putc/Kernel#putc/Kernel#putchar — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
前田です。
前田です。
前田です。
まつもと ゆきひろです
[#1562] Re: monitor.rb — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルソフトウェアです.
[#1585] Re: extended regular exp — 岡部 勝幸 <HGC02147@...>
岡部です
[#1602] with — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
[#1657] Re: [ruby-list:7057] Re: infinity — shugo@... (Shugo Maeda)
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
ふなばです。
前田です。
ふなばです。
ふなばです。
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
うさぎです
ふなばです。
前田です。
In message <199803101536.PAA01595@soleil.localnet.or.jp>
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
原です。
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
原です。
けいじゅ@日本ラショナルソフトウェアです.
原です。
[#1658] Re: [ruby-list:7060] Re: infinity — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
In message <199803101129.UAA10316.keiju@cupmail0.rational.com>
原です。
[#1718] new coerce [Re: coerce] — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1735] experimental release 1.1b9_01 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
[#1752] WeakRef — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1783] [Req] Comparable#min/max — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#1791] Re: trap and throw problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1820] [Req] Float#frexp and Float.ldexp — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1837] Re: [ruby-list:7131] Re: [REQUEST] Mathematical divmod (Re: calendar-html.rb) — Shin-ichiro HARA <sinara@...>
原です。
[#1859] experimantal release 1.1b9_04 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
ふなばです。
わたなべです.
ふなばです。
わたなべです.
まつもと ゆきひろです
わたなべです.
[#1860] [Request] FileTest.text?, test(?T, ) — Shin-ichiro HARA <sinara@...>
原です。リクエストです。
[#1866] [Req] __READLINE__, __FILE__ — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1886] Re: [ruby-list:7182] Re: chomp! — WATANABE Hirofumi <eban@...>
わたなべです.
[#1889] [Bug] autoload problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1908] RUBYLIB and default path problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#1928] protected methods (Re: sort-schedule.rb) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1962] [Bug] closed? — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1975] experimantal release 1.1b9_06 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#2002] [Req] Binding.new — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#2006] Re: new coerce — Toyofuku <toyofuku@...>
豊福@パパイヤです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[ruby-dev:1605] Re: [BUG] String.dup
けいじゅ@日本ラショナルソフトウェアです.
In [ruby-dev :01593 ] the message: "[ruby-dev:1593] Re: [BUG]
String.dup ", on Mar/05 12:18(JST) Yukihiro Matsumoto writes:
>まつもと ゆきひろです
>|>世の中にある全部の拡張モジュールを書き換える必要があるわけで
>|>すからできるだけAPIは変えたくないんですよねえ.
>|この問題は解決してないですよね...
>
>こっちの問題が解決しないんで採用したくないんですよねえ.
ですね. この問題も解決すると思われるいい案を考えました. 後方を参照して
下さい.
>|# でも, 本来クラスが持つべき情報を持っていないところに問題があると思い
>|# ますけどね.
>
>いや,まあそれをいえばその通りなんですけど,この情報ってこう
>いう例外的な時にしか役に立たない情報なんですよねえ.
例外的というか... でも, どうにかしないと落ちますしね. Cレベルの問題で
落ちるのならいいですが, rubyレベルで落ちるのはまずいでしょう?
>|現在オブジェクトに構造の情報が付加されるのは,
>| OBJSETUP(obj, klass, type_id);
>|のところですよね? このマクロ内で,
>| klass->type_id != type_id
>|
>|だったら例外を発生させるというのはどうでしょう? 普通, type_idが異なっ
>|ていたら, オブジェクトの構造に互換性がないと思って良いとおもうのですが...
>
>klass->type_id ってなに? クラスのTYPE()はいつも T_CLASS で
>すけど.また,クラスの構造体にはインスタンスの type_id を格
>納するスペースは残ってないですし,またもし全てのオブジェクト
>のサイズを拡大してそのスペースを用意したとしても,今度はいつ
>どうやってインスタンスのtype_idを格納するか,という問題が残
>ります.
この辺りの問題に触れない方法を考えました. 実現可能か検討して下さい.
何故, newを再定義するとまずいか? といいますと
class String
def String.new
super
end
end
の様にsuperを呼ぶのがまずいんですね.
# finalの様にこのメソッドを再定義することがまずいんではないんです.
これを分析しますと, String.newはそれなりの定義がCレベルで行なわれてい
ます(それもsuperを使わず). これは何を意味しているかというと, 上位のク
ラスとメソッドの互換性がないことを意味しています.
実は, このメソッドの定義によって上位クラスの同名のメソッドをオーバライ
ドして隠蔽しているわけです.
# もし隠蔽されなかったらundefするところでしょう.
で, 解決案ですが,
rb_define_singleton_method(cArray, "new", ary_s_new, -1)
rb_define_method(cArray, "[]=", ary_aset, -1)
の様にCレベルでメソッドが定義されたら,
class Array
super_undef new
super_undef []=
end
の様に Arrayからは上位クラスのnew/[]=がundefされているようにみえるよう
にすれば, 再定義されても全然問題がなくなります.
で, 安全なメソッドのばあいは,
class Exception
super_redef new
end
の用に明示的にsuper.newが使えるように宣言するようにすれば良いと思いま
す.
この方法の利点は
1. finalの場合と違い再定義可能
class <<Array
alias old_new new
def new
a = old_new
...
end
end
2. super_redefされたメソッドはsuperも使える.
3. 過去のプログラムも大体互換性がある. ない場合も実行すればエラーが出
るので何が問題かすぐわかり, 対処可能.
で. ここまで来て思ったのですが, undefは上記で出てきたsuper_undefの様な
定義とそのクラスに定義されているメソッドを消去する機能を合わせ持ってい
ますね? 2つに分離した方が良いと思います.
# 元々のundefはsuper_undefが目的だったような気がしますし.
PS.
これってメソッドの起源と似ていますね. あれは意味的な起源でしたが, これ
は実装上の互換性が保たれるルートのメソッドが何かって話ですから.
__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@rational.com <<---