atter_accessrとは?
A:クラスメソッドを外部から参照できるようになる
必要性
・rubyでクラス外からインスタンス変数にアクセスできないので、
このままでは、クラス外からインスタンス変数の参照や変更ができない!!
例
class User def initialize(name) @name = name end end r = User.new('私です') r.name *クラス外でnameを参照しようとしているので、undefined method `name'が出る
atter_accessrを記入してみる
class User attr_accessor :name ←追加!! def initialize(name) @name = name end end r = User.new('私です') p r.name *atter_accessrにより、nameが参照でき、"私です"と出た!
解説
atter_accessrはインスタンス変数にアクセスするためのメソッドを設定してくれる。
よって、クラス外からでも、atter_accessrに指定した変数は参照も書き換えも可能!
何が起こっているか
atter_accessr:変数名と書くと、参照も書き換えも可能と上記で記入したが、
なぜ??
class User atter_accessr:name ←これを書くと・・・ def initialize(name) @name = name end def name ←@nameを呼び出すnameメソッドを裏で定義してくれる @name end def name=(name)←@nameをを変更するためのメソッド裏で定義してくれる @name = name end end
class User atter_accessr:name, :age ←複数指定も可