更漂亮,缩进,漂亮的印刷

More beautiful, indented, pretty-printing

Array.inspect returns 其输出为一条直线:

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
          ]
        ];

该解决方案也应支持哈希并妥善处理其他事情。

您可能想尝试 AwesomePrint gem 默认情况下 return 以下内容(实际输出是彩色的)并且可以自定义:

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

我想 JSON.pretty_generate 就是您要找的。

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
  }
}