2016-07-26 118 views
1

Array.inspect返回其輸出的扁平線:更漂亮,縮進,漂亮的印刷

aoa = [ [1,2,3], [4,5,6] ] 
puts aoa.inspect # => [[1, 2, 3], [4, 5, 6]] 

有一種簡單的方法來獲得一個縮進輸出呢?確切的格式(例如,第一個[之後是否有換行符)對我來說並不重要。我只是想讓它更具可讀性。

比較的Perl:

DB<2> print Dumper([[1,2,3],[4,5,6]]) 
$VAR1 = [ 
      [ 
      1, 
      2, 
      3 
      ], 
      [ 
      4, 
      5, 
      6 
      ] 
     ]; 

該解決方案應該支持散列以及和妥善處理其他事情。

+2

那些準備回答將剪切和粘貼代碼,然後刪除所有'IRB (主):001:0>'。爲什麼不救他們第二步的麻煩? –

+0

謝謝,姆拉登,無論出於何種原因,我沒有找到你關聯的問題。問題解決了。 – AnoE

+1

你應該寫「@Miaden」,而不是「Miadan」,這樣SO纔會通知這個人他們已經留下了評論。 –

回答

5

你可能想嘗試AwesomePrint寶石這將默認返回以下(實際輸出彩色),並且是可定製:

aoa = [ [1,2,3], [4,5,6] ] 
#=> [ 
#  [0] [ 
#  [0] 1, 
#  [1] 2, 
#  [2] 3 
#  ], 
#  [1] [ 
#  [0] 4, 
#  [1] 5, 
#  [2] 6 
#  ] 
# ]   
+0

我不會爲這樣一個簡單,輕量且已經實現的stdlib安裝一個gem http://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html#method-i-pretty_generate)函數。 – siegy22

+0

我在調試測試代碼時使用'puts xxx.inspect';現在'ap xxx'在黃瓜環境中工作得很好,這個環境已經很有色彩了。與這個答案一起,但任何人都可以自由地檢查鏈接的問題,這是一個重複的問題。 – AnoE

-1

我覺得JSON.pretty_generate是你在找什麼。

require 'json' 
puts JSON.pretty_generate(["asdf", [1, 2, 3]]) 

輸出:

[ 
    "asdf", 
    [ 
    1, 
    2, 
    3 
    ] 
] 

和哈希:

puts JSON.pretty_generate({a: 1, b: 2, c: {x: 1234}}) 

輸出:

{ 
    "a": 1, 
    "b": 2, 
    "c": { 
    "x": 1234 
    } 
} 
+0

通過這樣做,您將失去信息。您將失去字符串鍵和哈希鍵的哈希鍵之間的區別。這不能替代檢查。 – sawa

+0

@sawa你真的有像'{a:1,「a」=> 2}'這樣的哈希值嗎? 我認爲這是一個很好的方式來打印散列以及數組。 – siegy22