2014-10-11 212 views
0

当我使用内置漂亮打印(pp)的Ruby时,结果会在单行上返回。例如,这是我看到:红宝石漂亮打印不是很漂亮

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 2014-10-11 00:28:02

+2

你不会错过任何东西。这是一个有效的意见。但是,您的问题太小,不能在此处作为问题提出。 – sawa 2014-10-11 00:55:03

+1

或者,如果您认为您经常看到的格式良好的输出都是'pp'输出的结果,那么您错了。你从哪里得到这个想法?如果您问**如何输出这些表格,您的问题可能会更有意义。 – sawa 2014-10-11 01:02:50

回答

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]