属性代入メソッドの注意点
属性代入メソッドは便利なのだけれど、レシーバが付いていないと、変数への代入とみなされて、呼ばれないことになるので注意。
class Foo def bar=(v) @bar=v end attr_reader :bar def baz(val) bar = val # ★属性代入のつもりだが、変数への代入になっている。 # self.bar = val # ☆変数への代入とみなされないように、レシーバが必要。 end end foo = Foo.new foo.bar = 123 p foo.bar #=> 123 foo.baz 345 p foo.bar #=> 123