我一直在通過實用程序員編程Ruby的書,並想知道是否可以在類中調用setter方法而不是直接分配給實例變量。Ruby - 從對象中調用setter
class BookInStock
attr_reader :isbn, :price
def initialize (isbn, price)
@isbn = isbn
@price = Float(price)
end
def price_in_cents
Integer(price*100 + 0.5)
end
def price_in_cents=(cents)
@price = cents/100.0
end
def price=(dollars)
price = dollars if dollars > 0
end
end
在這種情況下,我使用setter來確保價格不能爲負數。我想知道的是,如果可以從price_in_cents setter中調用price setter,以便我不必編寫額外的代碼以確保價格是正數。
在此先感謝
當然可以。去嘗試一下。在Ruby中,令人驚訝的是,你甚至可以在其他方法中定義方法:-) –