【Ruby3.x】Module::attr()メソッドの使い方
attrメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
attrメソッドは、クラスのインスタンス変数への読み取り専用アクセスメソッドを定義するメソッドです。これにより、オブジェクトの外部からインスタンス変数の値に安全にアクセスできるようになります。
このメソッドの引数には、アクセスメソッドを作成したいインスタンス変数名をシンボル(例: :name)または文字列(例: "name")で指定します。例えば、attr :nameと記述すると、そのクラスのインスタンスに対してnameという名前のメソッドが新しく定義されます。このnameメソッドを呼び出すと、対応するインスタンス変数@nameの値が返される仕組みです。インスタンス変数は通常、@で始まる名前(例: @name)を持ちますが、attrメソッドに渡す引数では@を除いた部分を指定することに注意してください。
attrメソッドを使用することで、クラスの内部実装であるインスタンス変数を直接公開することなく、決められたインターフェースを通してのみ値を提供する、というオブジェクト指向の原則に従った設計が可能になります。これは、オブジェクトの状態へのアクセスを制御し、コードの保守性や安全性を高める上で非常に重要です。
現在のRubyバージョン(1.8以降)では、attrメソッドは実質的にattr_readerメソッドの別名として機能します。そのため、読み取り専用のアクセスメソッドを定義する際には、より意図が明確なattr_readerの使用が一般的に推奨されます。しかし、既存のコードベースなどでattrが使われているケースもあるため、その機能と役割を理解しておくことは重要です。
構文(syntax)
1class MyClass 2 attr :attribute_name 3end
引数(parameters)
symbol, writable = false
- symbol: インスタンス変数名をシンボルで指定します
- writable: true を指定すると、そのインスタンス変数に書き込み可能なアクセサ(setter)も同時に定義されます。デフォルトは false です
戻り値(return)
nil
attr メソッドは、属性を定義するために使用されます。このメソッド自身は値を返しません。