我有以下代码:
class BookPrice
attr_accessor :price
def initialize(price)
@price = price
end
def price_in_cents
Integer(price*100 + 0.5)
end
end
b = BookPrice.new(2.20)
puts b.price_in_cents
这样做可以很好地运行,并生成220。但是,当我将第二行attr_accessor:price替换为:
def price
@price = price
end
我遇到了“堆栈层数太深(SystemStackError)”的错误。这是怎么回事?我知道我可以将Integer(price*100+0.5)替换为@price,而不是使用方法调用price,但出于面向对象编程(OOP)的原因,我希望保持现有的方式。如何在不使用attr_accessor的情况下使代码正常工作?
def price=(price)
也可以。 Translated:def price=(price)
is also acceptable. - steenslag