①エラーが起きるパターン
user.rb
class User
def initialize(name, age)
@name = name
@age = age
end
end
tanaka = User.new('田中太郎', 18)
tanaka.name
=> undefined method `name' for # (NoMethodError)
tanaka.age = 33
=> undefined method `age=' for # (NoMethodError)
②attr_accessorメソッド を使ったパターン
user.rb
class User
以下の記述でクラス外部から@name,@ageにアクセスが可能になる
attr_accessor :name, :age
def initialize(name, age)
@name = name
@age = age
end
end
tanaka = User.new('田中太郎', 18)
p tanaka.age #=> 18
tanaka.age = 33
p tanaka.age # => 33
このように、attr_accessorメソッドはインスタンス変数にアクセスするためのメソッドを裏側で定義してくれる。attr_accessorメソッドに指定されたインスタンス変数は、クラス外部から参照と変更の両方を行う事が出来るようになる。