У меня есть следующий код:
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: цена на:
def price
@price = price
end
Я получаю ошибку стека слишком глубоко (SystemStackError). Что происходит? Я знаю, что могу заменить Integer (цена * 100 + 0,5) на @price вместо цены вызова метода, но я хочу сохранить его таким, какой он есть по причинам ООП. Как я могу заставить этот код работать так, как он работает без attr_accessor?