2024-04-18 09:00:04

p vs放入Ruby

在Ruby中p和puts有区别吗?


当前回答

pfoo输出foo。Inspect后面跟着换行符,即输出Inspect的值而不是to_s,这更适合调试(因为你可以区分1、"1"和"2\b1"之间的区别,如果没有Inspect就不能打印)。

其他回答

同样重要的是要注意,put“react”到一个定义了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调用,但在实践中并不明显。

pfoo输出foo。Inspect后面跟着换行符,即输出Inspect的值而不是to_s,这更适合调试(因为你可以区分1、"1"和"2\b1"之间的区别,如果没有Inspect就不能打印)。

foo和foo。inspect是一样的

这两个相等:

p "Hello World"  
puts "Hello World".inspect

(inspect提供了一个比to_s方法更直观的对象视图)

P方法将打印更广泛的可调试消息,其中put将美化消息代码。

例:请看下面的代码行:

msg = "hey, Use \#{ to interpolate expressions"
puts msg #clean msg
p msg #shows \ with #

输出将是

hey, Use #{ to interpolate expressions
"hey, Use \#{ to interpolate expressions"

查看输出PIC以获得更清晰的信息