まつもと ゆきひろです
In message "Re: [ruby-dev:26463] String#each_byte and String#each_char"
on Thu, 7 Jul 2005 12:18:59 +0900, "NARUSE, Yui" <naruse / airemix.com> writes:
|HEADに対して、
|String#each_byte #=> array
|と、組み込みの
|String#each_char #=> array
|String#each_char{|char| block } #=> str
|の提案です。
|
|まず、String#each_byte。
|現在、stringのバイト単位の配列が欲しい場合は、
|string.unpack('C*')
|などとしますが、unpackを使うのは直感的ではありません。
|
|過去に、each_*がブロックなしで動作する例が他に無い[ruby-list:37048]、
|とされていますが、わたし自身はscanからの連想で、
|何度かeach_byteをブロック無しで使い、その度に悲しい思いをしているので、
|ブロック無しだと配列を返すようになるとうれしいです。
でも、やっぱり「eachは違う」と思います。そういうメソッドが欲
しいという要求は分かります。良い名前があれば今日にもHEADに追
加します。explodeなんて名前も聞いたことがありますが...。
split_bytes
explode_bytes
unpack_bytes
どうだろう?
|次にString#each_char。
|過去にeach_charについては議論されているようですが、
|eachのaliasを置き換えることは別とした場合、
|each_charを組み込みで導入すること自体への問題点は、
|メソッド名だけのように見えます。
|
|matz wrote in [ruby-dev:23995]
|> (2) M17N的な"character"ってのはコードポイント(に対応するバ
|> イト列)ですから、たとえば合成文字の場合一部分だけを表現
|> するものもcharacterになってしまいます。こういうものを堂々
|> とcharと呼んではいけないような気もします。なんか言い名
|> 前ないかな。
|
|http://www.itscj.ipsj.or.jp/tutorials/tu48.htmlにて、
|「文字構成要素でも符号位置を持っていれば,
| それをcharacterと呼ぶことがSC 2の定義であり,
| これらを合成した結果の"いわゆる文字"はcombining sequenceと
| 定義されている.」とされていることから、
|このeach_charは挙動にふさわしい名前だと考えます。
|よって、改めてeach_charの導入を提案します。
ふむ、ではeach_charは導入しましょう。ただし、ブロックなしで
配列をとる機能はeach_byte同様別の名前を必要とするとします。
|#Ruby M17Nって最近どうなってるのかな〜と思いつつ
えーと、「時間をください」。まずは鬼車ver.3とm17nの統合の不
完全な部分をなんとかしてm17nベースの鬼車を作ってからHEADに、
と思ってはいるのですが、はや数ヵ月ほっぽってます。
まつもと ゆきひろ /:|)