70

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

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

...但是当我尝试使用 打印出我的变量时puts,我将它们折叠起来:

value1
value2
value3
key1
value1

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

4

5 回答 5

121

您可以使用以下inspect方法:

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

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

require 'pp'
a=["value1", "value2", "value3"]
pp a
于 2009-03-31T21:12:34.913 回答
59

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

>> data = { 'dog' => 'Flemeale', 'horse' => 'Gregoire', 'cow' => 'Fleante' }
=> {"cow"=>"Fleante", "horse"=>"Gregoire", "dog"=>"Flemeale"}
>> y data
--- 
cow: Fleante
horse: Gregoire
dog: Flemeale
于 2009-07-15T00:57:28.883 回答
15

漂亮的打印效果很好,但Awesome_Print gem 更好!您将不得不这样做, require awesome_print但它可以很好地处理嵌套的哈希和数组,并在终端中使用“ap”而不是“p”为它们着色以放置输出。

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

require "awesome_print"
AwesomePrint.irb!
于 2012-02-20T14:43:10.970 回答
6

试试 .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"}
于 2009-03-31T21:12:40.140 回答
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"]} 
于 2012-01-06T20:14:45.900 回答