はじめに
この記事は書籍「プロを目指す人のためのRuby入門」に掲載できなかったトピックを著者自らが紹介するアドベントカレンダーの3日目です。
本文に出てくる章番号や項番号は書籍の中で使われている番号です。
今回は代入なしでローカル変数を宣言するトリビアを紹介します。
必要な前提知識
「プロを目指す人のためのRuby入門」の第2章まで読み終わっていること。
代入なしでローカル変数を宣言するトリビア
2.2.8項でも説明したとおり、ローカル変数は事前に何かしらの値を代入する必要があります。
# 変数を宣言する目的で変数名だけ書くと、エラーになる
x #=> NameError: undefined local variable or method `x' for main:Object
# 変数を宣言するには何かしらの値を代入する必要がある
x = nil
ただし、厳密に言うと、必ずしも代入が行われている必要はありません。次のコードを見てください。
if false
# このコードは絶対に実行されない
x = 123
end
# 代入は実行されていないが、xを参照してもエラーにはならない
x #=> nil
ご覧のとおり、代入は実行されていませんが、x
を参照してもエラーにはなりません。
なので、厳密に言えば、
Rubyでは実際に代入が実行されるかどうかにかかわらず、代入を行うコードが存在すれば、その時点でローカル変数を宣言したことになる(代入が実行されなかった場合の初期値はnil
)
ということになります。
ですが、上で示したようなコードは実際に使うと混乱の元になるので、通常は使うべきではありません。ローカル変数には必ず明示的に値を設定するようにしましょう。
参考文献
次回予告
次回は自分が書いたRubyプログラムをirb上で読み込む方法を紹介します。