擬似変数(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
プログラミングや開発環境構築の解説サイトを運営しています。