Rubyのtrueとfalse

論理型の扱いについてどのプログラミング言語でも多少の違いがある。どの値が「真」でどの値が「偽」かを理解しておくことは、その言語を扱う上ではとても重要である。ここではRubyにおける「真」「偽」について整理する。

Rubyにおいて何が「真」で何が「偽」かは、ありがたいことに非常に単純なルールで表現できる。

falseとnilを除く全ての値が「真」

他の言語では0は「偽」として扱われる事が多いがRubyでは「真」

2つの値で偽を表し、その他の値を真で表すというルールは時々邪魔になることがある。例えばfalseとnilを区別しないといけない場合である。そういう場合はObject#nil?メソッドまたはFalseClass#==メソッドを使うと良い。

nilか判定したい

falseか判定したい

ここで注意だが、falseを左に置いているのには理由がある。
if x == false のように右側にfalseを置いてしまうと、時として期待通りの動作をしない可能性がある。

以下のような場合だ。

Badクラスを定義

falseが返ると期待するも結果はtrue

まとめ
・falseとnilを除く全ての値が「真」
・nilかどうかを判定するときはObject#nil?を使う
・falseかどうかを判定するときはFalseClass#==を使う

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク