From: matz@... (Yukihiro Matsumoto) Date: 2004-07-30T18:44:17+09:00 Subject: [ruby-dev:23999] Re: String#each -> String#each_char まつもと ゆきひろです In message "[ruby-dev:23997] Re: String#each -> String#each_char" on 04/07/30, "U.Nakamura" writes: |むしろ、今のM17Nにある、各コードポイントをブロックに渡してく |るString#each_charではなくて、文字列中の各「1文字」をRubyの文 |字列として渡してくるメソッドを作成してそれをeach_charと呼ぶと |いうのはどうでしょうか? あ、言うのを忘れましたが、1.9で取り込まれるM17Nはruby_m17nと いくつか違いが出る予定です。 * _charというメソッドはなくなる。既に述べた理由で「char」 という単語を避けたいから。別の単語募集中。決まらなくて結 局charになったりして。 * 文字はコードポイントを示す整数からコードポイントをエンコー ドしたバイト列を含む文字列を返す。 * 先頭1バイトでマルチバイト文字列の長さが分かると言う仮定 の除去 というわけで、1.9では"あいうえお"[1]は"い"を返します。 |あんまりM17Nについてわかってないので勝手なことを言っています |が、それじゃいろいろ問題があるから今のString#each_charのよう |になってるのでしょうか。 |# そうだろうなあ... いえいえ、問題があったわけではなく、今までの延長線上という発 想からの単なる設計上の判断でした。が、長年考えるうちに文字列 のほうがいいと思うようになったので変更します。 ----- ところで、1.9にM17Nを入れると今までの1.9とは非互換になります。 この時点での1.9に未練がある人もいるかもしれませんので、もし かしたら、今までのを1.9.0、M17N入りのを1.9.1としてブランチを 切ることが望ましいと思う人もいるかもしれません。 以前、x.0が開発版でx.1以降が安定版というバージョン付けのやり 方を提案しましたが、1.9は元々2.0へのテストということで、この バージョンだけ特別に「大きな非互換性を導入するたびにバージョ ンをあげる」というやり方の方が望ましいかもしれません。2.0以 降のバージョン付けについては変更なしです(ただし、いつになる やら)。 とはいえ、1.8系に加えて1.9.0と1.9.1の両方をメンテするのは避 けたいのですが....。 意見を聴かせてください。 まつもと ゆきひろ /:|)