Ruby: 如何使 IRB 打印数组和散列的结构

当我在 IRB中创建一个新的数组/散列时,它会打印出一个很好的格式来显示结构,例如。

["value1", "value2", "value3"]
{"key1" => "value1"}

但是当我试图用 puts打印我的变量时,我得到了它们的折叠:

value1
value2
value3
key1
value1

我想 puts不是我想要的正确命令,但是什么才是呢?我希望能够在 IRB中以第一种格式查看我的变量,而不是第二种格式。

58794 次浏览

您可以使用 inspect方法:

a=["value1", "value2", "value3"]
puts a.inspect

或者,更好的方法是使用 pp (pretty print) lib:

require 'pp'
a=["value1", "value2", "value3"]
pp a

试试,检查一下

>> a = ["value1", "value2", "value3"]
=> ["value1", "value2", "value3"]
>> a.inspect
=> "[\"value1\", \"value2\", \"value3\"]"
>> a = {"key1" => "value1"}
=> {"key1"=>"value1"}
>> a.inspect
=> "{\"key1\"=>\"value1\"}"

您还可以使用 p ()方法来打印它们:

>> p a
{"key1"=>"value1"}

你可以做的另一件事是使用 y方法将输入转换成 Yaml,这会产生非常好的输出..。

>> data = { 'dog' => 'Flemeale', 'horse' => 'Gregoire', 'cow' => 'Fleante' }
=> {"cow"=>"Fleante", "horse"=>"Gregoire", "dog"=>"Flemeale"}
>> y data
---
cow: Fleante
horse: Gregoire
dog: Flemeale

我个人选择的工具是“漂亮打印”和 pp方法

require 'pp' # <- 'Pretty Print' Included in ruby standard library
pp({ :hello => :world, :this => ['is', 'an', 'array'] })
=> {:hello=>:world, :this=>["is", "an", "array"]}

漂亮的打印工程很好,但 牛叉 _ 打印的宝石更好!你将不得不使用 require awesome_print,但它可以漂亮地处理嵌套的散列和数组,并且在终端中使用‘ ap’而不是‘ p’来输出它们的颜色。

您也可以将其包含在 ~/. irbrc 中,使其成为显示对象的默认方法:

require "awesome_print"
AwesomePrint.irb!