web-dev-qa-db-ja.com

Ruby:配列とハッシュのIRB印刷構造を作成する方法

irbで新しい配列/ハッシュを作成すると、構造を示すニース形式が出力されます。

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

...しかし、putsを使用して変数を出力しようとすると、それらが折りたたまれます。

value1
value2
value3
key1
value1

putsは私が望むものに適したコマンドではないことを収集しますが、それは何ですか? irbの変数を2番目の形式ではなく最初の形式で表示できるようにしたい。

66
neezer

inspectメソッドを使用できます:

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

または、さらに良いことに、pp(pretty print)libを使用します。

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

もう1つできることは、入力をYamlに変換するyメソッドを使用することです。それはかなり素敵な出力を生成します...

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

きれいな印刷はうまく機能しますが、 Awesome_Print gemはさらに優れています!あなたはしなければならない require awesome_printしかし、ネストされたハッシュと配列を美しく処理し、ターミナルで「p」の代わりに「ap」を使用して出力を出力します。

これを〜/ .irbrcに含めて、オブジェクトを表示するためのデフォルトの方法として使用することもできます。

require "awesome_print"
AwesomePrint.irb!
13
Chris

.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
Gdeglin

このための私の個人的なツールは、 '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"]} 
3
jacobsimeon