まつもと ゆきひろです
In message "Re: [ruby-dev:27131] Re: fail on test/rss"
on Sun, 18 Sep 2005 13:14:35 +0900, nobu / ruby-lang.org writes:
|*をつけるというのは明示的なArrayへの変換を意図していると思われ
|るので、やはりto_aryだけではなくto_aも使うべきではないかと思い
|ます。nil.to_a == [] のほうをどうにかするか、新しく専用のメソッ
|ド(splat_valueとか*@とか)を呼ぶようにしたほうがいいんじゃないで
|しょうか。
過去の経験から言えば暗黙の変換はバグの発見を遅くするので良く
ないと思います。新しい専用のメソッドを導入しても良いのですが、
そもそも配列じゃないものをsplatに渡す時点で既におかしいので
はないかと思いますから、救済の必要性はあまり感じません。
問題が予想されるのは
* 配列のように見なすことができて
* to_aryが定義されておらず
* to_aは定義されている
ようなものをsplatに渡してしまうケースですね。Rangeとかが該当
するのかなあ。