2009-03-31 7 views
58

Lorsque je fais un nouveau tableau/hachage dans irb, il imprime un bon format pour montrer la structure, ex.Ruby: Comment faire la structure d'impression IRB pour les tableaux et les hachages

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

... mais lorsque je tente d'imprimer mes variables à l'aide puts, je reçois les se sont effondrés:

value1 
value2 
value3 
key1 
value1 

Je suppose que puts n'est pas la bonne commande pour ce que je veux, mais ce est? Je veux être en mesure de voir mes variables dans irb dans le premier format, pas le second.

Répondre

101

Vous pouvez utiliser la méthode inspect:

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

Ou, mieux encore, utilisez les pages (pretty print) lib:

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

Parfait. Merci! – neezer

+1

qu'est-ce que pp t'achète que p ne te donne pas déjà? – rampion

+6

'pp' vous achète l'indentation si l'objet est trop grand. – taw

4

Essayez .inspect

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

Vous pouvez également utiliser la méthode p() pour les imprimer:

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

Une autre chose que vous pouvez faire est d'utiliser la méthode y qui convertit l'entrée en Yaml. Ce produit sortie assez agréable ...

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

Nice, je ne le savais pas (j'adore YAML) –

+11

Bien sûr, vous devez 'require yaml' pour obtenir la méthode. – Chuck

+0

bon point! Merci! –

3

Mon outil personnel de choix pour c'est « Pretty Print » et la méthode pp

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

doh! Juste réalisé la réponse acceptée mentionne 'pp' – jacobsimeon

+2

+1 pour l'exemple de sortie :) – Madbreaks

12

La jolie impression fonctionne bien, mais le joyau Awesome_Print est encore meilleur! Vous devrez require awesome_print mais il gère joliment les hachages et les tableaux imbriqués et les colorie dans le terminal en utilisant 'ap' au lieu de 'p' pour mettre la sortie.

Vous pouvez également inclure dans votre ~/.irbrc d'avoir cela comme la méthode par défaut pour l'affichage des objets:

require "awesome_print" 
AwesomePrint.irb! 
+0

J'aime celui-ci, jolis hachages! –

Questions connexes