アクセスメソッドを使ってみる
アクセスメソッドとは?
オブジェクトからインスタンス変数にアクセスするためのメソッドのことです。
種類は以下の3つです。
- attr_reader
- attr_writer
- attr_accessor
attr_readerを使ってみる
class SelfIntro def initialize(name='名無しさん') @name = name end end self_intro = SelfIntro.new('太郎') puts self_intro.name
アクセスメソッドattr_reader
を使っていないため、エラーが発生します。
class SelfIntro def initialize(name='名無しさん') @name = name end # 追記 attr_reader :name end self_intro = SelfIntro.new('太郎') puts self_intro.name
今回はattr_reader
を追記したため、処理が成功します。
attr_writer を使ってみる
class SelfIntro def initialize(name='名無しさん') @name = name end attr_reader :name end self_intro = SelfIntro.new('太郎') self_intro.name = 'たろう' puts self_intro.name
アクセスメソッドattr_writer
がないため、インスタンス変数を更新することができません。
class SelfIntro def initialize(name='名無しさん') @name = name end attr_reader :name # 追記 attr_writer :name end self_intro = SelfIntro.new('太郎') self_intro.name = 'たろう' puts self_intro.name
今回はattr_writer
を追記したため、処理が成功します。
attr_accessor を使ってみる
class SelfIntro def initialize(name='名無しさん') @name = name end attr_accessor :name end self_intro = SelfIntro.new('太郎') self_intro.name = 'たろう' puts self_intro.name
attr_accessor
はattr_reader
とattr_writer
の両方を有効にすることが出来ます。
これは直接インスタンス変数を操作できるようになったわけではなく、インスタンス変数を操作するメソッドが自動的に追加されているというイメージです。