Ruby:如何为Arrays和Hashes制作IRB打印结构

时间:2009-03-31 21:05:00

标签: ruby irb

当我在 irb 中创建一个新的数组/哈希时,会打印出一个很好的格式来显示结构,例如

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

...但是当我尝试使用puts打印出我的变量时,我让它们崩溃了:

value1
value2
value3
key1
value1

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

5 个答案:

答案 0 :(得分:113)

您可以使用inspect方法:

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

或者,更好的是,使用pp(漂亮的打印)lib:

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

答案 1 :(得分:52)

您可以做的另一件事是使用y方法将输入转换为Yaml。这产生了相当不错的输出...

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

答案 2 :(得分:12)

漂亮的印刷效果很好,但Awesome_Print宝石更好!你将不得不require awesome_print,但它处理嵌套的哈希和数组,并使用'ap'代替'p'在终端中对它们进行着色以输出。

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

require "awesome_print"
AwesomePrint.irb!

答案 3 :(得分:4)

尝试.inspect

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

答案 4 :(得分:3)

我个人选择的工具是“Pretty Print”和pp方法

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