在 irb 中创建一个新的数组/哈希表时,它会以漂亮的格式打印出来以显示其结构,例如:
["value1", "value2", "value3"]
{"key1" => "value1"}
... 但是当我尝试使用puts
打印我的变量时,它们被折叠在一起:
value1
value2
value3
key1
value1
我了解到puts
不是我想要的正确命令,但是应该用哪个命令呢?我想在irb中以第一种格式查看我的变量,而不是第二种。
您可以使用inspect
方法:
a=["value1", "value2", "value3"]
puts a.inspect
或者更好的方法是使用pp(漂亮打印)库:
require 'pp'
a=["value1", "value2", "value3"]
pp a
还有一件事情可以做,就是使用y
方法将输入转换为Yaml。这将产生相当不错的输出...
>> data = { 'dog' => 'Flemeale', 'horse' => 'Gregoire', 'cow' => 'Fleante' }
=> {"cow"=>"Fleante", "horse"=>"Gregoire", "dog"=>"Flemeale"}
>> y data
---
cow: Fleante
horse: Gregoire
dog: Flemeale
YAML.dump
而不是y
方法。根据[https://github.com/tenderlove/psych/issues/50]:`y`污染了Kernel,并且根据[https://www.ruby-forum.com/topic/2332227],`Kernel.y`是私有的。 - aenw漂亮的打印效果很好用,但Awesome_Print宝石更好!你需要require awesome_print
,但它能够优美地处理嵌套的哈希和数组,并在终端上使用“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 a
{"key1"=>"value1"}
在这方面,我个人的首选工具是“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"]}
pp
可以帮助你进行缩进。 - taw