在Ruby语言中,p和puts有什么区别吗?
发布于 2009-08-10 14:52:05
p foo打印foo.inspect后跟一个换行符,即它打印inspect的值而不是to_s的值,这更适合于调试(因为您可以区分1、"1"和"2\b1",而在没有inspect的情况下打印时无法区分)。
发布于 2009-08-10 14:59:23
同样重要的是要注意,puts对定义了to_s的类进行“反应”,而p则没有。例如:
class T
def initialize(i)
@i = i
end
def to_s
@i.to_s
end
end
t = T.new 42
puts t => 42
p t => #<T:0xb7ecc8b0 @i=42>这直接来自.inspect调用,但在实践中并不明显。
发布于 2009-08-10 14:52:44
p foo与puts foo.inspect相同
https://stackoverflow.com/questions/1255324
复制相似问题