アクセスメソッド(アクセサ)をattr_reader, attr_writer, attr_accessorで定義

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

先ほどのページ、アクセスメソッド(アクセサ)では、アクセサを自分で定義していましたが、さらに便利な機能があります。

スポンサーリンク

インスタンス変数の参照や変更を行うメソッドは、頻繁に書く必要がありますから、Rubyではこれを自動的に定義してくれる書き方を用意してあります。
インスタンス変数の名前と同じ名前のメソッドが自動的に定義されます。

attr_reader

attr_reader :name

nameを参照するメソッドを定義します。(参照のみ)

attr_writer

attr_writer :name

nameを変更するメソッド「name=」を定義します。(変更のみ)

attr_accessor

attr_accessor :name

nameの参照および変更(name=)のメソッド両方を定義します。
attr_readerとattr_writerの両方です。

先ほどのクラスを書き換えます。

class Profile
    def initialize(name_one = "Tom")
        @name = name_one
    end
    # 名前を得る
    attr_reader :name
    # 名前を変更
    attr_writer :name
end
 
wil = Profile.new("Wiliam")
 
puts wil.name
# 綴り間違い。Williamに訂正する
wil.name = "William"
puts wil.name

実行結果。

Wiliam
William

上記のクラスは・・・

class Profile
    def initialize(name_one = "Tom")
        @name = name_one
    end
    # 名前の参照と変更
    attr_accessor :name
end

と書いても同じです。
クラス定義を随分と短くできました。

スポンサーリンク
 
スポンサーリンク