【第6回】Ruby初心者向け!Rubyの変数の種類まとめ
Rubyで使われる変数にはローカル変数やインタンス変数などがあります。
今回は複数あるRubyの変数についてまとめて紹介します。
Rubyで使われる変数たち
Rubyで使われる変数にはどういったものがあるのでしょうか?
Rubyの変数には複数の種類があり、それぞれの変数で有効なスコープが異なります。
- ローカル変数
- インスタンス変数
- クラス変数
- グローバル変数
- 定数
Rubyのローカル変数とは?
ローカル変数は、その変数が定義された場所でのみ利用できる変数です。文字通り、「ローカル」な変数ですね。
ローカル変数の使い方は、変数名の先頭文字を小文字にするか、_(アンダースコア)を使うことで利用できます。
変数の中では1番スコープが狭い変数なので、特に理由がなければローカル変数を使用するのが良いでしょう。
ここで実際にローカル変数のスコープ範囲を見てみましょう。
変数nameに人名を入れて、それをメソッドから呼び出してみます。
name = "Taro"
def hello
puts "my name is #{name}"
end
hello
=> NameError: undefined local variable or method `name' for main:Object
この場合、変数nameはメソッド外に定義されているので、helloメソッド内で使うことはできません。
Rubyのインスタンス変数とは?
インスタンス変数はクラス内の全メソッドを共通して使用することができる変数となります。
ローカル変数に比べるとクラス内の全メソッドで共通して使用できるので、スコープの範囲が大きくなっていますね。
そして、インスタンスごとに異なった値を持つことができる点も抑えておきましょう。
インスタンス変数の使い方は変数名の前に@を付けます。
上記、例の場合で言うと
@name = "Taro"
という形になります。
Rubyのクラス変数とは?
そのクラスやそこから生成されるインスタンス内から使える変数になります。
クラス変数の使い方は、変数の前に@@を付けます。
上記、例の場合で言うと
@@name = "Taro"
という形になります。
Rubyのグローバル変数とは?
グローバル変数とはその名の通り、どこからでも参照可能な変数のことです。他の変数に比べると1番スコープ範囲が大きいですね。
どこからでも使えるのなら、エラーも起こらず1番いいのでは?という気もしますが、逆にスコープの範囲の広さがプログラムの保守性を下げてしまう可能性もあります。
グローバル変数を多用すると、思わぬところで変数名が重複しエラーを引き起こすことがあります。
グローバル変数の使い方は、変数の前に$を使うことで使用できます。
$name = "Taro"
Rubyの定数とは?
最後にRubyの定数に関して紹介します。
定数とは変数と異なり、変更されない変数のことです。
パスなど変更されないものを参照する時に使われます。
では、定数は変更できないのか?というとそうでもありません。
実はRubyの定数は変更することは可能といえば可能です。(あまり使う機会はないと思いますが・・)
なお、定数を使う場合は変数名を大文字にするのが慣習です。
NAME = "Taro"
まとめ
今回、定数を含むRubyの変数を紹介しました。
それぞれの使い所やスコープの範囲の違いを抑えておきましょう。
▼関連記事
【第1回】Ruby初心者向け!ターミナルで動くコードを書いてみる