Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Module | attr_writer

概要

Module#attr_writer(*name) -> nil

詳細

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

つまり

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

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

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

と同じです。

サンプルコード
require 'pp'

class Person
  attr_writer :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_writer.rb
#<Person:0x28d16a8 @age=33, @name="tanaka">
#<Person:0x28d16a8 @age=40, @name="suzuki">