【Ruby3.x】Module::attr_writer()メソッドの使い方
attr_writerメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
attr_writerメソッドは、指定されたインスタンス変数に対するセッターメソッド(setter method、値を設定するためのメソッド)を自動的に定義するメソッドです。RubyのModuleクラスに属し、クラス定義内で使用することで、インスタンス変数への値の代入を可能にするメソッドを簡潔に生成します。
このメソッドは、オブジェクトの属性(プロパティ)に値を設定するための定型的なセッターメソッドの記述を省略し、開発者の手間を削減します。例えば、attr_writer :title と記述すると、Rubyは自動的に title=(value) というメソッドを定義します。これにより、クラスのインスタンスに対して object.title = "新しいタイトル" のように値を設定できるようになり、内部の @title インスタンス変数にその値が代入されます。
手動で def title=(value); @title = value; end のようにセッターメソッドを記述する代わりに attr_writer :title を利用することで、コードの記述量を大幅に削減し、可読性を高めることができます。特に多くの属性を持つクラスを設計する際に、煩雑なメソッド定義から解放されます。
attr_writerは値の「書き込み」のみを目的としており、値の「読み込み」のためのゲッターメソッドは生成しません。読み込みが必要な場合は attr_reader を、読み書き両方が必要な場合は attr_accessor を使用します。これにより、オブジェクトの状態管理を効率化します。
構文(syntax)
1class MyClass 2 attr_writer :attribute_name, :another_attribute 3end
引数(parameters)
*rest
- name: メソッド名 (シンボルまたは文字列)
- *names: 続けて定義したいメソッド名をシンボルまたは文字列で指定します
戻り値(return)
self
attr_writer メソッドは、指定された名前のインスタンス変数を設定するためのアクセサメソッドを定義します。このメソッドは、メソッド自身が定義されたモジュール(またはクラス)オブジェクトを返します。