Ruby: как сделать структуру печати IRB для массивов и хэшей


когда я делаю новый массив / хэш в irb, он печатает хороший формат, чтобы показать структуру, например.

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

... но когда я пытаюсь распечатать мои переменные с помощью puts, Я получаю их рухнула:

value1
value2
value3
key1
value1

Я понимаю puts это не правильная команда для того, что я хочу, но что такое? Я хочу иметь возможность просматривать мои переменные в irb в первом формате, а не второй.

5 64

5 ответов:

можно использовать inspect способ:

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

или, еще лучше, используйте pp (pretty print) lib:

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

красивая печать работает хорошо, но 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() для их печати:

>> p a
{"key1"=>"value1"}

мой личный инструмент выбора для этого довольно распечатать и pp метод

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