インスタンス変数
@から始まる変数をつけて定義する。クラスの前メソッドで使用できる変数であるということ。
オブジェクトごとにインスタンス変数の中身は変わる。
特徴
インスタンスメソッドのどこかで定義すればクラス内で使える。(プライベートメソッドも)
class Hoge
def initialize(number)
@num = number
end
def a
p @num
end
end
h = Hoge.new(1)
h.a #=> 1
オブジェクトごとに持つ値が変化する。
class Hoge
def initialize(number)
@num = number
end
def a
p @num
end
end
h = Hoge.new(1)
h2 = Hoge.new(2)
h.a #=> 1
h2.a #=> 2
アクセサーを使ってオブジェクトからインスタンス変数値にアクセスできる。attr_readerは読み込み、attr_writerは書き込み。attr_accessorは両方。
class Hoge
attr_accessor :num
def initialize(number)
@num = number
end
end
h = Hoge.new(1)
h.num #=> 1
まとめ
インスタンス変数は@から始まる変数名をつけて定義する。クラス内のどこでも使えて、オブジェクト毎に値が変わる。