Mam następujący kod:Ruby, poziom stos zbyt głębokie (SystemStackError)
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
To wszystko działa dobrze i produkuje 220. Ale kiedy wymienić drugą linię attr_accessor: Cena z:
def price
@price = price
end
Występuje błąd zbyt wysokiego poziomu stosu (SystemStackError). Co się dzieje? Wiem, że mogę zastąpić Integer (cena * 100 + 0,5) z @price zamiast ceny wywołania metody, ale chcę zachować to tak, jak to jest z przyczyn OOP. Jak mogę sprawić, aby ten kod działał tak, jak jest, bez attr_accessor?
'cenie def = (cena)' jest również w porządku. – steenslag
@steenslag Tak, masz rację !! –
Dzięki, zgaduję, że użyję def cena = (new_price) dla jasności. – daremkd