Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Ruby | Module | attr_accessor

概要

Module#attr_accessor(*name) -> nil

詳細

インスタンス変数読み書きの両方のインスタンスメソッドを定義する。

つまり

class Person
  attr_accessor :name
  def initialize(name)
    @name = name
  end
end

class Person
  def initialize(name)
    @name = name
  end

  def name
    @name
  end

  def name=(name)
    @name = name
  end
end

と同じです。

サンプルコード
require 'pp'

class Person
  attr_accessor :name, :age

  def initialize(name, age)
    @name, @age = name, age
  end
end

person = Person.new('tanaka', 33)
pp person
person.name = 'suzuki'
person.age = 40
pp person

出力

$ ruby module_attr_accessor.rb
#<Person:0x0000060038cc68 @age=33, @name="tanaka">
#<Person:0x0000060038cc68 @age=40, @name="suzuki">