【发布时间】:2015-11-17 04:24:47
【问题描述】:
在以下代码中,p 和 puts 给出相同的输出。
class Book
def initialize(title, price)
@title = title
@price = price
end
def to_s
"book with title=#{@title} and price=#{@price}"
end
end
book1 = Book.new("Book of Ruby", 50.63)
puts book1 # => book with title=Book of Ruby and price=50.63
p book1 # => book with title=Book of Ruby and price=50.63
为什么会这样? p 应该调用 book1.inspect 而不是 book1.to_s。
【问题讨论】:
-
我无法重现您描述的行为。 Ruby 2.2.3 的行为与预期一样,
p执行inspect和puts执行to_s。 (虽然我不得不取消注释to_s实现......) -
我使用的是 ruby 1.9.3
-
@Abs 该链接并没有真正为这个问题提供任何答案
-
我不小心标记了这个