学習記録

アウトプット用に作りました

attr_accessor

attr_accessorを理解する前に、インスタンス変数、ゲッター、セッターについてまとめます。

インスタンス変数

変数名の先頭に@をつけることで作ることができ、
同じオブジェクト内であれば、複数のメソッドをまたいで使うことができます。
またオブジェクトが存在する間はずっと使うことができます。
しかし!!オブジェクトの外側からは直接使うことができません!!!
なのでインスタンス変数の情報を外で使うためのメソッドを追加してみます。(ゲッター)
またインスタンス変数へ代入するメソッドもついでに作ってみます。(セッター)

class User

   # nameメソッドを作って、インスタンス変数@nameを戻り値とする(ゲッター) 
    def name
        @name
    end
   
   # name=メソッドは引数で受け取ったデータをインスタンス変数@nameに代入している(セッター)
    def name=(text)
        @name = text
    end

end

user = User.new
user.name = "太郎"
puts user.name

実行結果

ruby user.rb
太郎

ゲッター

インスタンス変数を戻り値とするメソッドを追加して、それを呼び戻します。
短い書き方として、
attr_reader :変数名
があります。役割は「参照」

セッター

引数で受け取ったデータをインスタンス変数に代入します。
短い書き方として、
attr_writer :変数名
があります。役割は「更新」

ゲッターとセッターを使ってコードを書き換える

class User
    attr_reader :name
    attr_writer :name
end

user = User.new
user.name = "太郎"
puts user.name

attr_accessor

上記のゲッターとセッターの2つを合体させたのが、
attr_accessorメソッドです。

attr_accessorを使ってコードを書き換える

class User
    attr_accessor :name
end

user = User.new
user.name = "太郎"
puts user.name

attr_accessorを使うと、インスタンス変数を使うことができるようになり、
簡単にセッターとゲッターを実装することができるようになりました。