2014-10-11 2 views
0

Когда я использую Ruby's in Pretty Print (pp), результат возвращается на одну строку. Например, это то, что я вижу:Ruby pretty print не очень красиво

require 'pp' 

pp [1, 2, 3] 
# [1, 2, 3] 

pp({ a: 'b', c: 'd', e: 'f' }) 
# {:a=>"b", :c=>"d", :e=>"f"} 

От чтения в Интернете, мое понимание, что это на самом деле должен вывести что-то вроде:

pp [1, 2, 3] 
# [ 
# 1, 
# 2, 
# 3 
# ] 

pp({ a: 'b', c: 'd', e: 'f' }) 
# { 
# :a => "b", 
# :c => "d", 
# :e => "f" 
# } 

Что мне не хватает?

+0

Рассматривали ли вы с помощью awesome_print вместо этого? Я использую 2.1.2 и сталкиваюсь с той же проблемой, но без проблем с awesome_print ... – Dair

+2

Вы ничего не пропустили. Это правильное мнение. Тем не менее, ваш вопрос слишком тривиален, чтобы его задавали в качестве вопроса. – sawa

+1

Или, если вы считаете, что хорошо отформатированные выходы, которые вы часто видите, являются результатом результата 'pp', тогда вы ошибаетесь. Откуда у вас эта идея? Возможно, ваш вопрос имел смысл, если бы вы спросили **, как ** вывести эти формы. – sawa

ответ

1

Для небольшого массива (или хэша) печать выполняется на одной линии, потому что она (возможно) понятна при первом взгляде.

require 'pp' 

ary = [1, 2, 3] 
aaaaarrraaay = (1..100).to_a 

pp ary 
#> [1, 2, 3] 
pp aaaaarrraaay 
#> [1, 
#> 2, 
#> 3, 
#> 4, 
#> 5, 
#> ... 
#> 100] 

Это зависит от того, печатается ли ваш вывод выше 79 символов. (См the code that does it)

Однако вы можете изменить это, если вы используете PP.pp вместо pp

def my_pp(anything) 
    PP.pp(anything, out = $>, width = 0) 
end 

my_pp [1, 2, 3] 
#> [1, 
#> 2, 
#> 3]