アクセスメソッド(アクセサ)をattr_reader, attr_writer, attr_accessorで定義
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
先ほどのページ、アクセスメソッド(アクセサ)では、アクセサを自分で定義していましたが、さらに便利な機能があります。
スポンサーリンク
インスタンス変数の参照や変更を行うメソッドは、頻繁に書く必要がありますから、Rubyではこれを自動的に定義してくれる書き方を用意してあります。
インスタンス変数の名前と同じ名前のメソッドが自動的に定義されます。
attr_reader
attr_reader :name
nameを参照するメソッドを定義します。(参照のみ)
attr_writer
attr_writer :name
nameを変更するメソッド「name=」を定義します。(変更のみ)
attr_accessor
attr_accessor :name
nameの参照および変更(name=)のメソッド両方を定義します。
attr_readerとattr_writerの両方です。
先ほどのクラスを書き換えます。
class Profile def initialize(name_one = "Tom") @name = name_one end # 名前を得る attr_reader :name # 名前を変更 attr_writer :name end wil = Profile.new("Wiliam") puts wil.name # 綴り間違い。Williamに訂正する wil.name = "William" puts wil.name
実行結果。
Wiliam William
上記のクラスは・・・
class Profile def initialize(name_one = "Tom") @name = name_one end # 名前の参照と変更 attr_accessor :name end
と書いても同じです。
クラス定義を随分と短くできました。
スポンサーリンク
>> 次の記事 : クラス変数・クラスメソッド
<< 前の記事 : アクセスメソッド(アクセサ)
- - 関連記事 -
- 特異クラスによるクラスメソッド定義・class << self ~ end
- モジュールの使い方
- クラス定義でメソッドへのアクセス制限・public, private, protected
- クラス継承
- クラス拡張
- クラス変数・クラスメソッド
- アクセスメソッド(アクセサ)
- Rubyのクラス定義・initialize(コンストラクタ)
- スーパークラスとサブクラス・クラス継承
- classメソッド・オブジェクトが属するクラスを調べる
- private, protected アクセス指定の違い
- オブジェクトのコピーを作る
- Rubyのinitializeメソッドの継承
スポンサーリンク