コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyのおいて判定などに用いる「偽」はnilとfalse、それ以外が「真」となる。

特にPHPから来た人には頭に入れておいたほうがいいやつ。

環境

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]

どういうことか

FalseClassであるfalseと何もない nil のみが偽を表すもので、それ以外は全て真になる。

ドキュメント曰く

false のクラス。 false は FalseClass クラスの唯一のインスタンスです。 false は nil オブジェクトとともに偽を表し、 その他の全てのオブジェクトは真です。 - class FalseClass (Ruby 2.6.0)

コード例

test.rbとして以下の内容を記載

def message(value)
  if value
    p "this is 真"
  else
    p "this is 偽"
  end
end

message(true)
message(false)
message(nil)
# 配列にnilが入っていても、配列なので真
message([nil])
# 0は真になる
message(0)

結果

$ ruby test.rb
"this is 真"
"this is 偽"
"this is 偽"
"this is 真"
"this is 真"

となる。

参考リンク