Ruby: Comment faire la structure d'impression IRB pour des tableaux et hachages

StackOverflow https://stackoverflow.com/questions/703049

  •  22-08-2019
  •  | 
  •  

Question

Quand je fais un nouveau tableau / hachage irb , il imprime un format agréable de montrer la structure, ex.

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

... mais lorsque je tente d'imprimer mes variables à l'aide puts, je les ai effondrés:

value1
value2
value3
key1
value1

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

Était-ce utile?

La solution

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

Autres conseils

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

La jolie impression fonctionne bien, mais la pierre précieuse Awesome_Print est encore mieux! Vous devrez require awesome_print mais il gère hash imbriqués et les tableaux eux magnifiquement couleurs plus dans le terminal en utilisant « ap » au lieu de « p » pour met 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!

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"}

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"]} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top