2014-10-11 244 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]