ruby attr_accessor / instance方法很困惑

时间:2018-04-13 11:00:37

标签: ruby

我正在尝试理解attr_accessor,而在挖掘时我对以下行为感到非常困惑:

class Item

    def change_price
        price=(2)
    end

    def price=(value)
        @price = value
    end

    def price
        @price
    end

end

my_item = Item.new
p my_item.price
my_item.change_price
p my_item.price

=> nil
nil

我希望价格设定为2.很明显,我完全误解了一些我认为很明显的东西。 有人会好心解释我在哪里厚吗?

谢谢

1 个答案:

答案 0 :(得分:1)

属性设置器(任何带有等号的函数)必须在显式接收器上调用。否则,正在创建局部变量 price并将其分配给该值。

修正:

def change_price
#   price=(2)
    self.price=(2)
end