擬似変数(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)
すると次のように表示されます。
このように擬似変数にはあらかじめ値が代入されており、必要なときに参照することができます。
true,false,nilの使い方
擬似変数の中でも true, false, nil の 3 の擬似変数は「真」または「偽」を表すのに使用されるもので、 true は「真」を表し、 false と nil は「偽」を表すのに使用されます(実際には false と nil 以外はすべて「真」として扱われます)。
if や while 文などで使われる条件式では、条件式が成立している場合は true を返します。逆に条件式が成立していない場合は false を返します。
次の例を見て下さい。
# encoding: UTF-8 puts(1 == 1) puts(2 == 1)
このサンプルを実行すると 1 行目は true 、 2 行目は false を返しています。
1 == 1 では 1 と 1 が等しいので true を返し、 2 == 1 では 2 と 1 が等しくないので false が返されます。
nil はオブジェクトが存在していないことを表すために使用されます。例えば何もオブジェクトが代入されていない変数には nil が代入されているとして扱われます。そして nilは「偽」として処理されます。
if文の条件式における「真」と「偽」について
true は「真」で、 false と nil は「偽」として扱われますが、実際には false と nil 以外はすべて「真」として扱われます。そのどちらでもない 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
下記のように実行して下さい。
4 つの if 文がありますが、条件式のところが「真」となるのは true と 4 の場合です。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。