Ruby には bool / boolean な真偽型が存在しないぽい。
nil と false 以外はすべて真。

疑似変数

通常の変数以外に疑似変数と呼ばれる特殊な変数があります。

self
  現在のメソッドの実行主体

nil
  NilClassクラスの唯一のインスタンス

true
  TrueClassクラスの唯一のインスタンス。真の代表値

false
  FalseClassクラスの唯一のインスタンス。nilとfalseは偽を表します。

__FILE__
  現在のソースファイル名
  フルパスとは限らないため、フルパスが必要な場合は File.expand_path(__FILE__) とする必要があります。

__LINE__
  現在のソースファイル中の行番号

疑似変数の値を変更することはできません。擬似変数へ代入すると文法エラーになります。

変数と定数
true のクラス。 true は TrueClass クラスの唯一のインスタンスです。 true は真を表す代表のオブジェクトです。

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

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

class NilClass

追記: 2014-11-26

Ruby では空文字列「""」や数値の「0」が真 (true) として扱われる。。。

Rubyにはブーリアン型が無く、false は FalseClassクラスのインスタンス、true は TrueClassクラスのインスタンスである。真偽値としては、false と nil 以外は全て真として扱われるので、空文字列や数値の 0 が偽として扱われる言語に慣れた者や移植の際は注意が必要である。

ブーリアン型 - Wikipedia

こういうサンプルコードを書いてみて、


a = 0
if a then
  puts "0 => true"
else
  puts "0 => false"
end
 
b= ""
if b then
  puts "\"\" => true"
else
  puts "\"\" => false"
end

実行したら、ほんとに「0」と「""」が true だった。。。


0 => true
"" => true

tags: ruby

Posted by NI-Lab. (@nilab)