“p”和“pp”有什么区别?

时间:2012-01-25 19:20:33

标签: ruby

我确实做了一些搜索,但找不到简单问题的答案。

Ruby中ppp有什么区别?我知道你需要require 'pp'。除此之外还有什么区别?

3 个答案:

答案 0 :(得分:26)

p用于检查变量作为调试助手。它可以打印方法#inspect的输出。例如,p foo将输出foo.inspect

的内容

有时您需要调试复杂变量或嵌套变量。在这种情况下,p将输出一条难以理解的长行。相反,pp将尝试排列变量的内容,以便更容易理解,例如缩进嵌套数组或对复杂对象的每个实例变量使用一行。 pp这样做会调用#pretty_inspect方法(pp库会将#pretty_inspect方法添加到许多类中,例如StringArray或{{1 }})。

要记住:Struct = print,p =漂亮的打印。

答案 1 :(得分:5)

他们略有不同。

data = [false, 42, %w{fourty two}, {:now => Time.now, :class => Time.now.class, :distance => 42e42}]
p data
  [false, 42, ["fourty", "two"], {:now=>2012-01-25 19:23:06 +0000, :class=>Time, :distance=>4.2e+43}]
pp data
  [false,
   42,
   ["fourty", "two"],
   {:now=>2012-01-25 19:23:06 +0000, :class=>Time, :distance=>4.2e+43}]

请注意:我从显示difference between pp and their gem

的网站上窃取了测试数据

答案 2 :(得分:3)

p打印对象的String表示形式,后跟换行符。 puts也是如此。不同之处在于puts使用to_s将参数转换为字符串,p使用inspect。这意味着p通常比puts更适合调试。

pp是“漂亮的印刷品”;它使用pretty_inspect来获取对象的String表示。