まつもと ゆきひろです

In message "[ruby-list:19927] array + empty string"
    on 99/12/27, MORITA Atsushi <moritaa / coe.nttdata.co.jp> writes:
|
|[] + ["a"] => ["a"]
|[] + "a"   => ["a"]
|で、
|[] + [""]  => [""]
|なのに、
|[] + ""    => []
|
|というのは、私にとっては違和感がある([""]を期待してしまう)んですが、ど
|のような理由でこういう動作になっているんでしょうか?

[] + obj は obj が配列でないとき [] + obj.to_a と解釈されま
すが、"".to_a が [] だからですね。しかし、"".to_a が [] なの
は each がなにも返さないからとはいえ、仕様バグっぽいですね。
1.5.0で "".to_a => [""] と実装して問題なければ、1.4系にもフィー
ドバックしようと思います。

|",a".split(/,/) => ["", "a"]
|なのに
|",".split(/,/)  => []
|
|というのも同様です。(["", ""]を期待)
|ねっこは同じなんだろうなぁということはなんとなくわかるんですが...

実はねっこは違ってて、こちらは split は limit を指定しないと
き、末尾の空文字列を削除するという(Perlゆずりの)ルールがある
からです。このルールがRubyにそぐわないというのはありえる話で
すが、変更することが必要かどうかは十分な検討の上行いたいです
ね。

				まつもと ゆきひろ /:|)