0
0

More than 3 years have passed since last update.

Rubyのattr_accessorとは

Last updated at Posted at 2021-07-08

attr_accessor

attr_accessorの理解に少し時間がかかったため備忘録として書きます。

user.rb
class User
  attr_accessor :name
end

上記は省略された書き方で、

user.rb
class User
# セッター
  attr_writer :name

#  ゲッター
  attr_reader :name
end

と書くことができます。
ここでatter_writeratter_readerはそれぞれ「ゲッター」と「セッター」と呼ばれています。

さらに、下のように書くこともできます。

user.rb
class User

# ゲッター
  def name=(name)
    @name = name
  end

# セッター
  def name
    @name
  end

end

まずゲッターは

user.rb
def name=(name)
  @name = name
end

となっています。
@から始まる変数はインスタンス変数と呼ばれ、オブジェクト内でメソッドをまたいで使用できる変数です。

クラスを定義した後に

user.rb
# Userクラスをオブジェクト化
user1 = User.new

#セッターを呼び出して値を代入
user1.name = "Taro"

とすれば、インスタンス変数である@nameTaroが代入されます。

次にセッターについて考えます。

user.rb
def name
  @name 
end

nameというメソッドを定義しており、その中でセッターで定義した@nameを戻り値としています。

なので、クラス定義後に

user.rb
# Userクラスをオブジェクト化
user1 = User.new

#セッターを呼び出して値を代入
user1.name = "Taro"

# ゲッターで返される値を出力
puts user1.name

とすれば、Taroが出力されます。

つまり、attr_accessorはゲッターとセッターを1行で使うことができる便利なやつということです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0