[#40854] Ruby without false or nil — SASADA Koichi <ko1@...>

 ささだです。

14 messages 2005/06/08

[ruby-list:40859] Re: Ruby without false or nil

From: "Kent.N" <kentn@...4.dion.ne.jp>
Date: 2005-06-08 12:53:02 UTC
List: ruby-list #40859
皆さん初めまして、Kent.Nと申します。

面白そうな話なのでぜひ混ぜて下さい :-)

On Wed, 8 Jun 2005 20:47:37 +0900
SAITO Shukaku <shukaku@j-mac.co.jp> wrote:

> nilかfalseのどちらか1つだけでも言語としては困らないのかも知れませんが、
> 値の意味合いとしては現在のように両方ある方が、個人的には好きです。false
> は文字通り真偽の"偽"として、nilは"該当値なし"として、例え条件式での扱い
> が同じであっても、表記上の意図を示せる方が良いなぁと思います。

nilの使い道で一番多いのは
「値があるならそれを、なければnilを返せ」
というパターンだと思います。
で、そういうケースでは、返ってくる可能性のある値は
あるカテゴリに収まっているケースがほとんどですよね。

仮にnilが存在しなかった場合、この手のコードは
「値があるならそれを、なければ値のカテゴリに属さない
何かを返せ」
のように作ることになると思います。
#それか、「値があるかどうか」と「値を返せ」を
#別々に用意して、いざという時は例外飛ばすか

しかしそうすると、返却された値をチェックする際に、
その値がどんなカテゴリに属しているのかをいちいち
考えなきゃいけなくて、とても面倒です。

そんなときに、いつでも何処でも「どのカテゴリにも属さない値」
が用意されていれば、何も考えずにそれを使うことができます。
その為のnilなんじゃないかと。

あと、falseは、値のカテゴリが「真偽値」の場合には
有効な値になり得ますから、nilの代わりにはなりません。

他に、nilがないとコンテナに対するジェネリックな
処理を書きづらいんじゃないかなあ…
…とか思うのは根がC++ユーザだからかも知れません(^^;

-- 
Kent.N <kentn@m4.dion.ne.jp>


In This Thread