我确实进行了一些搜索,但找不到简单问题的答案。
p
和pp
在Ruby中有何区别?我知道您需要require 'pp'
。除此之外还有什么区别吗?
我确实进行了一些搜索,但找不到简单问题的答案。
p
和pp
在Ruby中有何区别?我知道您需要require 'pp'
。除此之外还有什么区别吗?
p
用于作为调试助手检查变量。它打印出方法#inspect
的输出结果。例如,p foo
将输出foo.inspect
的内容。
有时候需要调试复杂的变量或嵌套的变量。在这种情况下,p
会输出一条难以理解的长行。相反,pp
会尝试整理变量的内容,使其更易于理解,例如缩进嵌套数组或使用每个复杂对象实例变量的单行。pp
调用#pretty_inspect
方法来实现这一点(pp
库将#pretty_inspect
方法添加到许多类中,如String
、Array
或Struct
)。
记住:p
= 打印,pp
= 漂亮打印。
它们略有不同。
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}]
p
打印一个对象的字符串表示形式,并在末尾加上一个换行符,puts
也是如此。它们的区别是 puts
使用 to_s
将参数转换为字符串,而 p
使用 inspect
。这意味着 p
在调试时通常比 puts
更有用。
pp
是 “pretty print”的缩写;它使用 pretty_inspect
获取一个对象的字符串表示形式。
p
就像 puts
,而 pp
就像 p
,那么这三个都是相似的。问题在于询问它们之间的区别。 - sawap
使用 inspect
而 puts
使用 to_s
。 - Alex D