Рубин:Как создать структуру печати IRB для массивов и хэшей
Вопрос
Когда я создаю новый массив / хэш в ирб, он выводит хороший формат, чтобы показать структуру, например.
["value1", "value2", "value3"]
{"key1" => "value1"}
...но когда я пытаюсь распечатать свои переменные, используя puts
, Я получаю их свернутыми:
value1
value2
value3
key1
value1
Я так понимаю, что puts
это не подходящая команда для того, что я хочу, но что это такое?Я хочу иметь возможность просматривать мои переменные в ирб в первом формате, а не во втором.
Решение
Вы можете либо использовать inspect
способ:
a=["value1", "value2", "value3"]
puts a.inspect
Или, что еще лучше, используйте библиотеку pp (pretty print):
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
Красивый принт работает хорошо, но Потрясающий_принт драгоценный камень еще лучше!Вам придется 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"}
Мой личный инструмент выбора для этого - "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"]}