卜部でございます。

Yukihiro Matsumoto wrote:

>|>"恋するプログラム"からの受け売りですが、例えばString#indexで該当文字列が
>|>見付からなかった時にnilが返るので、部分文字列の有無だけを判定するのにnil
>|>が"偽"だと便利ではあります。
>|
>|String#indexがfalseを返したとしても成り立つ議論です。
>
>理屈では確かにそうですが、しかし、indexが真偽値を返すという
>のになにか違和感を感じるのは私だけでは無いと思います。まあ、
>慣れの問題かもしれませんが。
>  
>
そうですかねえ? 「部分文字列の有無だけを判定する」というのはようするに真
偽値を要求するコンテキストなんだと理解したわけですが。
真偽値がほしいなら真偽値が帰ってきてくれたほうが自然と思いませんか?

>|falseが戻ってきてもいいと思いませんか。
>
>思いませんねえ。
>
実は僕もあまり積極的にfalseに変更してほしいとは思わないのですが

>なんでだろう。Rubyでは一貫して真偽値を返すも
>のはtrue/false、任意の値と未定義(or 非存在)を表す場合にはnil
>というルールが確立している(確立させようとしている)せいかもし
>れません。
>  
>
このようなルールが自分にとって心地よいものである可能性は高そうです。

>ENVは文字列しか値を取りませんから、nilに対する挙動はエラーか
>削除かどちらかしかないと思います。エラーにして方が良かったか
>な。
>
nil.to_str を見ていただくわけには行きませんかね。
個人的には NilClass#to_str を定義することがままあります。

>PStoreはnilに対応してると思うんですが。
>  
>
おっと。これは勘違いでした。撤回します。

>あ、そうそう。Rubyの仕様を論じるときに「驚き最小」への言及は
>禁止ね(苦笑)。
>  
>
りょうかい:)