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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem code unten
Schafft nie stopable Rekursion.
Müssen Sie schreiben, wie
def price=(price)
ist auch in Ordnung.Ja, du hast Recht!!
Danke, ich vermute ich werde def Preis=(new_price) um der Klarheit Willen.
InformationsquelleAutor Arup Rakshit
Müssen Sie tun:
differenzieren zwischen Ihre Objekt-Attribut
price
und Ihre Methode parameterprice
.InformationsquelleAutor Doctor Mohawk
read_attribute
ist, was Sie suchenInformationsquelleAutor Maged Makled