Rubyの変数の使い方をまとめた。クラス変数やインスタンス変数の宣言の方法など。
Rubyには以下の変数がある。
グローバル変数
Rubyのグローバル変数は$から始まる必要がある。$global bar = "foo" def hello local = "fuga" puts $global #hogeと表示される #puts bar #アクセスできない(undefined local variable or method `bar' for main:Object (NameError)) end $global = "hoge" hello #puts local #->localにはアクセスできない
ローカル変数
ローカル変数は以下の範囲内をスコープとしている。- ブロック
- クラス・モジュール定義
- メソッド定義
- トップレベル
定数
定数名は大文字アルファベットで始まる必要がある。メソッドの中で定数の定義を行うことはできない。
インスタンス変数
インスタンスの中でだけ参照できる変数をインスタンス変数という。インスタンス変数を使うことで、オブジェクトの状態を保持することができる。
インスタンス変数は「@my_client」のように、@から始まる名前をつける。
# encoding:utf-8 class Friend def name=(val) @name = val end def name @name end end takeshi = Friend.new takeshi.name = "takeshi" puts takeshi.name #"takeshi"と表示される
今回はセッターゲッターのようなものを明示的に書く例にしたが、実際にインスタンス変数にアクセスするメソッドがほしい時は、
attr_accessor :name
と定義すればいい。
クラス変数
クラス変数は、クラスとそのインスタンスをスコープとした変数のこと。Javaでいうとstaticをつけた変数のことだ。
クラス変数はクラスにひっついている変数のイメージで、インスタンス化しなくても使うことができる。
# encoding:utf-8 class Friend @@message = 'OK, I am your friend!' def self.say_static_message puts @@message end end Friend.say_static_message #'OK, I am your friend!'と表示される
ついでに、クラスメソッドの定義の仕方は、self.メソッド名とやればいい。