还有另一种方法可以在不声明def to_s的情况下执行此操作

bon*_*316 0 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
Run Code Online (Sandbox Code Playgroud)

def to_s不能做,我可以做以下吗?

b1 = BookInStock.new("isbn1", 3)
puts "#{isbn}, #{price}"
Run Code Online (Sandbox Code Playgroud)

作为回应我感到空白.

tad*_*man 5

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

class BookInStock
  attr_reader :isbn
  attr_reader :price
end
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

puts "#{b1.isbn}, #{b1.price}"
Run Code Online (Sandbox Code Playgroud)

或者给出你如何使用浮点数:

puts "%s %.2f" % [ b1.isbn, b1.price ]
Run Code Online (Sandbox Code Playgroud)