これはattr_readerが配列で動作するはずの方法ですか?
class User
def initialize
@interests = []
end
attr_reader :interests
end
u = User.new
=> #User:0x1d2cb60
u.interests << "music"
=> ["music"]
u.interests[1] = "travelling"
=> ["travelling"]
u.interests = nil
NoMethodError: undefined method `interests=' for u:User
私は自分の説明が正しいかどうかを確認しているだけです。そうでない場合は、私を修正してください:
インスタンス変数自体(配列オブジェクトへの参照を保持している)を直接変更しているのではなく、その配列オブジェクトが参照する値を操作しているだけなので、attr_readerは「@interests」値の割り当てを止めませんか?
それが正しければ、 attr_reader が配列値への書き込みアクセスを許可するのを避けるための迅速で良い方法はありますか?
ありがとう