ごとけんです

In message "[ruby-dev:8757] Re: [ruby-list:19945] Re: array + empty string"
    on 99/12/29, Yukihiro Matsumoto <matz / netlab.co.jp> writes:

>|>     (g) str.collect{|s|s}相当(現状)
>|>     (h) str が$/を含まないとき [str]、含むときstr.collect{|s|s}
>|>     (i) いつも [str]
>
>|という事で、マニュアルからすると (i) でも良さそうな気もします。文字列
>|を普通に配列に変換した物が、行単位の文字列とは言い切れない感じがします
>|ので。
>
>ですねえ。個人的には(h)と(i)の間で揺れています。(g)は一見筋
>が通っていることを積み重ねて結果的に直感に反しているので、あ
>まり望ましくないと思ってます。それくらいならモデルが複雑な方
>が良い、と。

それもそうですねぇ。ただ僕的によくやるString#to_sの使い方は、

 lines = file.read.to_a

でして、このあと何らかの形で lines.each を経由して処理すると
いうモノです。まぁ、each を呼ぶなら to_a が余分という話はあ
りますが、こうやっておくとちょっと速いようなので。ですから、
"".to_a != [] だと逆に直観に反します。たしかにリテラルで 
"".to_a == [""] と書くと自然に見えるというのも分かるんですが、
現実的にはリテラルでそんなこと滅多にしないという気もします。
一方、僕の場合は file.read.collect{|l|l} と書けばよいという
気もしますね。

やっぱりマニュアルにきちんと挙動が書いてあるなら上記のどれで
もよいという案に一票です。

-- gotoken