还有另一种方法可以在不声明def to_s

时间:2015-05-19 20:47:32

标签: ruby

class BookInStock
  def initialize(isbn,price)
    @isbn = isbn
    @price = Float(price)
  end
end

def to_s
  #"ISBN: #{@isbn}, price: #{@price}"
end

b1 = BookInStock.new("isbn1", 3)
puts b1
b2 = BookInStock.new("isbn2", 3.14)
puts b2
b3 = BookInStock.new("isbn3", 5.67)
puts b3

不能执行def to_s,我可以执行以下操作吗?

b1 = BookInStock.new("isbn1", 3)
puts "#{isbn}, #{price}"

作为回应,我感到空白。

1 个答案:

答案 0 :(得分:5)

通常你会公开这样的属性:

class BookInStock
  attr_reader :isbn
  attr_reader :price
end

然后你可以这样做:

puts "#{b1.isbn}, #{b1.price}"

或者给出了你如何使用花车:

puts "%s %.2f" % [ b1.isbn, b1.price ]