2009-03-31 18 views
58

Khi tôi tạo một mảng/băm mới trong irb, nó sẽ in ra một định dạng đẹp để hiển thị cấu trúc, ví dụ.Ruby: Cách tạo cấu trúc in IRB cho Mảng và Hashes

["value1", "value2", "value3"] 
{"key1" => "value1"} 

... nhưng khi tôi cố gắng để in ra các biến của tôi sử dụng puts, tôi nhận được chúng sụp đổ:

value1 
value2 
value3 
key1 
value1 

Tôi tập hợp mà puts không phải là lệnh phù hợp với những gì tôi muốn, nhưng những gì Là? Tôi muốn có thể xem các biến của mình trong irb ở định dạng đầu tiên, không phải là biến thứ hai.

Trả lời

101

Bạn có thể sử dụng phương pháp inspect:

a=["value1", "value2", "value3"] 
puts a.inspect 

Hoặc, thậm chí tốt hơn, sử dụng các trang (in đẹp) lib:

require 'pp' 
a=["value1", "value2", "value3"] 
pp a 
+1

Perfect. Cảm ơn! – neezer

+1

Trang nào mua cho bạn rằng p chưa cung cấp cho bạn? – rampion

+6

'pp' mua bạn thụt lề nếu đối tượng quá lớn. – taw

4

Hãy thử .inspect

>> a = ["value1", "value2", "value3"] 
=> ["value1", "value2", "value3"] 
>> a.inspect 
=> "[\"value1\", \"value2\", \"value3\"]" 
>> a = {"key1" => "value1"} 
=> {"key1"=>"value1"} 
>> a.inspect 
=> "{\"key1\"=>\"value1\"}" 

Bạn cũng có thể sử dụng phương thức p() để in chúng:

>> p a 
{"key1"=>"value1"} 
47

Một điều bạn có thể làm là sử dụng phương thức y chuyển đổi đầu vào thành Yaml. Sản xuất sản lượng khá đẹp ...

>> data = { 'dog' => 'Flemeale', 'horse' => 'Gregoire', 'cow' => 'Fleante' } 
=> {"cow"=>"Fleante", "horse"=>"Gregoire", "dog"=>"Flemeale"} 
>> y data 
--- 
cow: Fleante 
horse: Gregoire 
dog: Flemeale 
+0

Đẹp, không biết (tôi chỉ yêu YAML) –

+11

Tất nhiên, bạn phải 'yêu cầu yaml' để có được phương pháp. – Chuck

+0

điểm tốt! Cảm ơn! –

3

cụ cá nhân của tôi về sự lựa chọn cho điều này là 'Pretty In' và pp phương pháp

require 'pp' # <- 'Pretty Print' Included in ruby standard library 
pp({ :hello => :world, :this => ['is', 'an', 'array'] }) 
=> {:hello=>:world, :this=>["is", "an", "array"]} 
+0

doh! Chỉ cần nhận ra câu trả lời được chấp nhận đề cập đến 'pp' – jacobsimeon

+2

+1 cho ví dụ đầu ra :) – Madbreaks

12

Các in khá hoạt động tốt, nhưng Awesome_Print ngọc thậm chí còn tốt hơn! Bạn sẽ phải require awesome_print nhưng nó xử lý băm lồng nhau và mảng đẹp cộng với màu sắc trong Terminal bằng cách sử dụng 'ap' thay vì 'p' để đặt đầu ra.

Bạn cũng có thể bao gồm nó trong ~/.irbrc để có điều này như là phương pháp mặc định để hiển thị các đối tượng:

require "awesome_print" 
AwesomePrint.irb! 
+0

Tôi thích cái này, Hashes đẹp mắt! –

Các vấn đề liên quan