【问题标题】:What is difference between "p" and "pp"?"p" 和 "pp" 和有什么不一样?
【发布时间】:2012-01-25 19:20:33
【问题描述】:

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

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

【问题讨论】:

    标签: ruby


    【解决方案1】:

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

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

    记住:p = 打印,pp = 漂亮的打印。

    【讨论】:

      【解决方案2】:

      它们略有不同。

      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 的网站上窃取了测试数据。

      【讨论】:

      • 即使像那里提到的“ap”又名“Awesome Print”,安装gem 的开销也会增加“gem install awesome_print” 使用ap 命令显示的数据'[ [0] false,[1] 42, [2] [ [0] "四十", [1] "二" ], [3] { :now => 2015-09-29 22:39:13 +0800, :class=> 时间 4.2e+43 } ]'
      【解决方案3】:

      p 打印一个对象的字符串表示,后跟一个换行符。 puts 也是如此。区别在于puts 使用to_s 将参数转换为String,而p 使用inspect。这意味着p 在调试方面通常比puts 更有用。

      pp 是“漂亮的印刷品”;它使用pretty_inspect 来获取对象的字符串表示形式。

      【讨论】:

      • 您的措辞令人困惑。如果pputs 相似,ppp 相似,那么这三个都将相似。问题在于区别。
      • 感谢 cmets;我已经更新了答案。我在这里发布另一个答案的原因是因为其他人错过了p使用inspectputs使用to_s的关键点。
      • @MattBriggs:我点击了你提供的链接,但没有提到 pretty_inspect。
      猜你喜欢
      • 2021-12-21
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多