nil の扱い

www.textfile.org より、ひ日誌 経由で [ruby-list:41768] Re: nilの扱い


ここで Railsblank.rb に定義された blank? というのは、Squeak だと #isEmptyOrNil のようなものでしょうか。

Collection >> isEmptyOrNil
   ^ self isEmpty
UndefinedObject >> isEmptyOrNil
   ^ true

なお、Smalltalk で UndefinedObject は nil の属するクラスで、Ruby の NilClass に相当します。


システム内で isEmptyOrNil が送信されている局面を調べてみる(SystemNavigation default browseAllCallsOn: #isEmptyOrNil)と、通常なら、条件を満たす要素を含むコレクションを返すメソッドの返値に対し、該当する要素を見つけられなかった場合(空コレクション)と、メソッドがある意味、異常終了した場合(nil)の両方に対処できるように用いられている場合が多いようです。



文字通り、空コレクションか nil かを問うているだけなので、“ブランクか”という新しい解釈(振る舞い)をいくつかのオブジェクトに付加する blank? とは少々趣を異にしますが、実現のしかたはそっくりですね。