Rubyはattr_writerで書き込み専用属性を作れるのですか?

1件の回答

回答を書く

1172784

2026-02-25 17:50

+ フォロー

こんにちは。



はい、Rubyではattr_writerを使うことで書き込み専用の属性を定義することができます。

通常、インスタンス変数に値を代入するためにはセッターメソッドを自分で記述する必要がありますが、attr_writer :nameと書くだけでRubyが自動的にdef name=(val); @name = val; endというメソッドを生成してくれます。

これにより、外部から値を設定することは可能ですが、読み取り用のメソッドは定義されないため、user.nameのように呼び出すとエラーになります。



つまり「値は渡せるが参照はさせない」という設計ができ、カプセル化を強化する際に役立ちます。

例えばユーザーの内部状態を外部から変更は許可するが、直接参照はさせたくない場合に有効です。

読み取り専用にしたい場合はattr_reader、読み書き両方を許可したい場合はattr_accessorを使い分けることで、柔軟にアクセス制御を設計できます。



attr_writerはシンプルながら、情報隠蔽を保ちながら必要な操作だけを公開するための便利な仕組みです。

うったえる有益だ(0シェアするブックマークする

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有