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