From: Yasushi Shoji Date: 2000-11-07T19:55:06+09:00 Subject: [ruby-dev:11406] Re: Ruby I18N At Tue, 7 Nov 2000 19:06:27 +0900, "たけ(tk)" wrote: > 》そうしようかなあと思ってます。過去の互換性が第一の理由ですが、 > 》UTF-2000まで目指さないなら不要ってのもあります。逆にそれがあっ > 》た方が嬉しい十分な理由があれば導入するわけですが。 > >  文字自体は Fixnum として、 > > src = 'あいう' # SJIS > dst = 'わをん' # EUC > > となっているときに、SJISの src[2] をEUCの dst[2] に入れたいとする。 [...] > src_char = src.get_char(2) > dst.set_char( 2 , src_char ) # dstの typeを知っているなら dst[2] = src.to_euc[2] # dstの typeを知らないなら dst[2] = src.convert_to(dst.type)[2] じゃ、だめ? String#[]が「文字」を取り出す methodだと思ってしまうと、Rubyが知らないな にかを基本に codeを書いてしまうんじゃないでしょうか? 文字列を扱うときに人間がなにげに操作してしまう「文字」の classを定義する のは直感的に文字を扱える言語を作るには良いかもしれないけど、最初にまつも とさんが提示した速度という問題点に引っかかるのかも あくまでも byte codeの一部である Fixnumを取り出す methodだと思えば dst[2] = src[2] は、「あり」であって、dstが文字列としての一貫性をたとえ失ってもこの代入 式が気にする事じゃないと思う。 もちろん String#[]が文字を取り出す methodで String#[]=が、自分の typeと は異なる typeの文字を引数に取るときに自動的に変換するか変換できない時は Exceptionを投げると言うのもまた「あり」ではないでしょうか? # Ruby 2.0と並行して Ruby UTF-2000の開発かな?(笑) -- yashi