擬似変数(true/false/nil)について

Ruby では擬似変数と呼ばれる特別な変数が用意されています。擬似変数には true や false などがあり、擬似変数の値を変更することはできません。ここでは Ruby で用意されている擬似変数について解説します。

(Last modified: )

Rubyにおける擬似変数とは

Ruby では次のような擬似変数が用意されています。

self
nil
true
false
__FILE__
__LINE__
__ENCODING__

self はクラスメソッドの中で参照された場合はクラス自身、インスタンスメソッドの中で参照された場合はインスタンスを表します。 self については別のところでまた詳しく解説したいと思います。

__FILE__ は現在のソースファイル名、 __LINE__ は現在のソースファイルの中の行番号、 __ENCODING__ はソースファイルの文字コードを参照できます。

例えば次の簡単なサンプルを実行してみます。

# encoding: UTF-8

puts("__FILE__ = " +  __FILE__)
puts("__LINE__ = " +  __LINE__.to_s)
puts("__ENCODING__ = " +  __ENCODING__.to_s)

すると次のように表示されます。

Rubyにおける擬似変数とは(1)

このように擬似変数にはあらかじめ値が代入されており、必要なときに参照することができます。

true,false,nilの使い方

擬似変数の中でも true, false, nil の 3 の擬似変数は「真」または「偽」を表すのに使用されるもので、 true は「真」を表し、 falsenil は「偽」を表すのに使用されます(実際には falsenil 以外はすべて「真」として扱われます)。

ifwhile 文などで使われる条件式では、条件式が成立している場合は true を返します。逆に条件式が成立していない場合は false を返します。

次の例を見て下さい。

# encoding: UTF-8

puts(1 == 1)
puts(2 == 1)

このサンプルを実行すると 1 行目は true 、 2 行目は false を返しています。

true,false,nilの使い方(1)

1 == 1 では 1 と 1 が等しいので true を返し、 2 == 1 では 2 と 1 が等しくないので false が返されます。

nil はオブジェクトが存在していないことを表すために使用されます。例えば何もオブジェクトが代入されていない変数には nil が代入されているとして扱われます。そして nilは「偽」として処理されます。

if文の条件式における「真」と「偽」について

true は「真」で、 falsenil は「偽」として扱われますが、実際には falsenil 以外はすべて「真」として扱われます。そのどちらでもない true は「真」ですし、 8 などの数値や "ok" などの文字列もすべて「真」となります。

if 文では条件式が「真」の場合はそのあとの処理を実行します。よって条件式が true を返した場合は「真」となるためそのあとの処理が実行されます。

例えば次のようなif文を考えてみます。

if 1 == 1 then
  print("真です")
end

条件式 1 == 1 を評価すると true が返されます。そのため上記は次のように記述してあるのと同じです。

if true then
  print("真です")
end

true は「真」のため、そのあとの処理が実行されます。

もう一つ別の if 文を見てください。

if 4 then
  print("真です")
end

条件式には 4 とだけ記載されています。 4 は false でも nil でもないので「真」であり、結果としてそのあとの処理が実行されます。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

if true then
  puts(true)
end

if false then
  puts(false)
end

if nil then
  puts(nil)
end

if 4 then
  puts(4)
end

下記のように実行して下さい。

擬似変数 true, false, nil

4 つの if 文がありますが、条件式のところが「真」となるのは true と 4 の場合です。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。