Rubyのインスタンス変数、学び始めたばかりの頃は全然わかっていなかった。
その勘違いをサンプルコードとともにまとめてみた。
【勘違い】インスタンス変数はinitializeメソッドでしか定義できない
実際は、以下の様なことが可能。
class Engineer
attr_accessor :name, :age
def initialize(name)
@name = name
end
def set_age(age)
@age = age
end
end
engineer = Engineer.new('aoki')
p engineer.name
engineer.set_age(35)
p engineer.age
実行結果
"aoki"
35
initializeメソッド内では定義していない@ageという変数を
別のset_ageというメソッドを使って定義している。
結論
あくまで、新規インスタンス生成時にインスタンス変数を定義したい時にinitializeメソッド内に書く。新規インスタンス生成時でなくてもいいなら、別のインスタンスメソッドを使って定義してもいいい。