March 09, 2005

[Ruby] nilは比較できるといい?

rubyをやっていて戸惑ってエラーを頻発させてしまったのは、nilに対して<,>,<=,>=などの演算をすると例外がでるということです。私としては黙ってfalseを返すことを期待していたのですが。

もちろんrubyは柔軟な言語なので、基本的なクラスに関しては、黙ってfalseを返すように変更するのは難しくなさそうです。でも、どっちがいいんでしょうね。例外なげるのとfalse返すのと。

Posted by arai at March 9, 2005 06:46 PM
Comments

昔のJavaHouseBrewersで「equals の引数に null が来たときの挙動」の議論を思い出しました。この辺?

http://java-house.jp/ml/archive/j-h-b/046131.html

演算子には右辺と左辺をひっくり返しても結果が変わらない事が期待されるので、どっちかがnilの場合は例外が出ることは悪くないと思います。

プログラマ的には、演算子の都合よりもnilかどうか調べる手間が増えることは確かに面倒です。でもnilの場合の挙動はアプリケーションやプログラマの都合によって違うので、はじめから例外以外の動作を用意するというのは大変かもしれません。

Posted by: さ on March 10, 2005 01:43 AM

こんなかんじでお茶を濁す手も,
http://www.c2.com/cgi/wiki?NullObject

Posted by: omo on March 10, 2005 02:15 AM

まあ、慣れてしまうとどうってことないですね。最初のうちはnilの関連した動作はすべてnilになるという動作(SQL的)を期待していたので、かなり間違ったコードを書いていました。

Posted by: arai on March 17, 2005 04:19 PM
Post a comment














Please enter this 6digits Security Code (for SPAM's sake...).
spam対策のため6桁のセキュリティコードを入力してください。