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

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

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

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

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

要记住: p = print, 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}] 

请注意:我从一个显示pp和他们的gem之间差异的网站上窃取了测试数据。

p打印对象的String表示forms,后跟换行符。 puts 。 不同之处在于puts使用to_s将参数转换为String, p使用inspect 。 这意味着p通常比调试更有用于调试。

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