我想了解如何在Ruby中使用setter方法,但我不明白爲什麼這段代碼不起作用。這是不是工作,因爲當我創建書籍對象時,他已經將他的價格設置爲book
?如果我將問題行更改爲book.price = book.price + 10.00
,則按預期工作。爲什麼?爲什麼我不能只通過傳入不同的參數來改變值?爲什麼我不能設置像這樣的實例變量的值
class BookInStock
attr_reader :isbn
attr_accessor :price
def initialize(isbn,price)
@isbn = isbn
@price = Float(price)
end
def isbn
@isbn
end
def to_s
"ISBN: #{@isbn}, price: #{@price}"
end
end
book = BookInStock.new("isbn",38.5)
puts "The books cost: #{book.price} and the name is: #{book.isbn}"
book.price = book.price 150 # THIS LINE IS BROKEN WHY?
puts "The new price is "
puts "The new price of the book is #{book.price}"
啊,我現在看到的! – lampShade