【问题标题】:More beautiful, indented, pretty-printing [duplicate]更漂亮,缩进,漂亮的印刷[重复]
【发布时间】:2016-11-30 00:32:11
【问题描述】:

Array.inspect 以一条平线返回其输出:

aoa = [ [1,2,3], [4,5,6] ]
puts aoa.inspect # => [[1, 2, 3], [4, 5, 6]]

有没有一种简单的方法来获得缩进输出?确切的格式(例如,在第一个 [ 之后是否有换行符)对我来说并不重要。我只是想让它更具可读性。

比较 Perl:

  DB<2> print Dumper([[1,2,3],[4,5,6]])
$VAR1 = [
          [
            1,
            2,
            3
          ],
          [
            4,
            5,
            6
          ]
        ];

该解决方案也应该支持哈希并优雅地处理其他事情。

【问题讨论】:

  • 那些准备答案的人会剪切并粘贴您的代码,然后删除所有irb(main):001:0&gt;。为什么不为他们省去第二步的麻烦呢?
  • 谢谢您,Mladen,无论出于何种原因,我都没有找到您所链接的问题。问题解决了。
  • 您应该写“@Miaden”,而不是“Miadan”,这样 SO 会通知该人已为他们留下评论..

标签: ruby pretty-print inspect


【解决方案1】:

您可能想尝试AwesomePrint gem,它会默认返回以下内容(实际输出是彩色的)并且可以自定义:

aoa = [ [1,2,3], [4,5,6] ]
#=> [
#     [0] [
#       [0] 1,
#       [1] 2,
#       [2] 3
#     ],
#     [1] [
#       [0] 4,
#       [1] 5,
#       [2] 6
#     ]
#   ]        

【讨论】:

  • 我不会为这样一个简单、轻量级且已经 stdlib 实现的 (ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/…) 功能安装 gem。
  • 我以前在调试测试代码时使用puts xxx.inspectap xxx 现在在 Cucumber 环境中工作得很好,已经非常有色了。使用此答案,但任何人都可以随意检查与此重复的链接问题。
【解决方案2】:

我认为JSON.pretty_generate 是您正在寻找的。​​p>

require 'json'
puts JSON.pretty_generate(["asdf", [1, 2, 3]])

输出:

[
  "asdf",
  [
    1,
    2,
    3
  ]
]

对于哈希:

puts JSON.pretty_generate({a: 1, b: 2, c: {x: 1234}})

输出:

{
  "a": 1,
  "b": 2,
  "c": {
    "x": 1234
  }
}

【讨论】:

  • 这样做会丢失信息。您将失去字符串键和哈希键之间的区别。这不能代替检查。
  • @sawa 你真的有像{a: 1, "a" =&gt; 2} 这样的哈希吗?我认为这是打印散列和数组的好方法。
猜你喜欢
  • 2021-06-22
  • 2020-11-21
  • 2017-05-01
  • 2011-10-29
  • 2011-04-09
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
相关资源
最近更新 更多