卜部でございます。 Yukihiro Matsumoto wrote: >ふむ。nil以外ではエラーにしているわけですから、nilだけto_str >を見るというのはあまり一貫性が無いと思います。いっそ、全部を >to_strにする、というのもひとつの選択ですが、使い易さという点 >からは全部エラーにした方がよさそうに思います > ># 変えるかな。 > > それはそれで納得できる仕様です。ENV.[]=は (1) 引数が文字列でなければもれなくエラーになる (2) 引数にもれなくto_strを試す のどちらかの挙動になるべき、と正式に提案したいです。Duck Typepっぽいので (2)が好みです。 >|個人的には NilClass#to_str を定義することがままあります。 > >それってどういう使い方なんですか。グローバルな変更は影響が大 >きすぎて扱い難くないですか? > > あるケース(実際にあった)では、nilとStringがごちゃまぜになった配列を返し てくる某ライブラリを使ってるときに、nilとStringをポリモルフィックに使い たいと思って定義しました。NilClass#to_strが空文字列を返してくれるだけ で、かなり楽になれたと持っています。 このケースは明らかに一般的でない(仕様上のバグを回避しようとした汚いハッ クともいえる)し、万人に勧められるものでもないと思いますが。