[ruby-list:45850] Re: false と nil の and

From: rubikitch@...
Date: 2009-02-02 21:25:23 UTC
List: ruby-list #45850
From: <lr68k@yahoo.co.jp>
Subject: [ruby-list:45849] false と nil の and
Date: Tue, 3 Feb 2009 05:53:24 +0900

るびきちです。

> Rubyで、false && nil と nil && false を それぞれ表示させたところ
> 前者はfalse、後者はnilが表示されました。
> 
> この二つは同じ意味の式だと思うのですが、不具合でしょうか
> それとも何か理由がありこういう仕様になっているのでしょうか?

仕様です。なぜなら、 && と and (違いは優先順位のみ)は偽が
確定した時点で評価をやめるからです。Rubyにおいて偽はfalseとnilのみです。

「false && nil」はfalseが偽なのでfalseが返ります。
「nil && false」はnilが偽なのでnilが返ります。

なお、 || と or も真が確定した時点で評価をやめ、その時点の値を返します。

1 || nil              # => 1
nil || true || false  # => true

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

In This Thread