Ruby:如何为数组和哈希创buildIRB打印结构

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

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

…但是当我尝试打印出我的variables使用puts ,我得到他们折叠:

 value1 value2 value3 key1 value1 

我认为, puts不是我想要的正确的命令,但是是什么? 我想能够在第一个格式,而不是第二个在irb中查看我的variables。

您可以使用inspect方法:

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

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

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

你可以做的另一件事是使用y方法将input转换成Yaml。 这产生相当不错的输出…

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

漂亮的打印效果很好,但Awesome_Print的gem更好! 你将不得不require awesome_print但它处理嵌套散列和数组美丽加上颜色他们在terminal使用'ap'而不是'p'来放置输出。

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

 require "awesome_print" AwesomePrint.irb! 

试试看

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

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

 >> pa {"key1"=>"value1"} 

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

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