Ruby stack level too deep (SystemStackError)

Ich habe den folgenden code:

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

Das alles funktioniert gut und produziert mit 220. Aber wenn ich ersetzen Sie die zweite Zeile attr_accessor :Preis:

def price
  @price = price
end

Bekomme ich stack level too deep (SystemStackError) Fehler. Was ist Los? Ich weiß, ich kann ersetzen Integer(Preis*100 + 0,5) @Preis statt dem Aufruf der Methode den Preis, aber ich will es so wie es ist für OOP Gründen. Wie kann ich diesen code so funktionieren, wie es ist, ohne attr_accessor?

InformationsquelleAutor daremkd | 2013-09-29

Schreibe einen Kommentar