2009-03-31 4 views
58

Cuando hago una nueva matriz/hash en irb, imprime un buen formato para mostrar la estructura, ej.Ruby: Cómo crear la estructura de impresión IRB para Arrays y Hashes

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

... pero cuando trato de imprimir mis variables utilizando puts, los consigo colapsaron:

value1 
value2 
value3 
key1 
value1 

deduzco que puts no es el comando correcto para lo que yo quiero, sino lo ¿es? Quiero poder ver mis variables en irb en el primer formato, no en el segundo.

Respuesta

101

También se puede usar el método inspect:

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

O, mejor aún, utilizar el PP (impresión bonita) lib:

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

perfecto. ¡Gracias! – neezer

+1

¿Qué te compra pp que p aún no te da? – rampion

+6

'pp' le compra una sangría si el objeto es demasiado grande. – taw

4

Trate .inspect

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

También puede usar el método p() para imprimirlos:

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

Otra cosa que puede hacer es usar el método y que convierte la entrada en Yaml. Eso produce bastante agradable de salida ...

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

Bueno, no lo sabía (me encanta YAML) –

+11

Por supuesto, tienes que 'requerir yaml' para obtener el método. – Chuck

+0

buen punto! ¡Gracias! –

3

Mi herramienta personal de elección para esto es 'Pretty Print' y el método 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! Acabo de darme cuenta de que la respuesta aceptada menciona 'pp' – jacobsimeon

+2

+1 para el ejemplo de salida :) – Madbreaks

12

La impresión bonita funciona bien, pero la joya es aún Awesome_Print ¡mejor! Tendrá que llamar al require awesome_print, pero maneja los hash y arreglos anidados maravillosamente y los colorea en el Terminal usando 'ap' en lugar de 'p' para poner la salida.

También puede incluirlo en su ~/.irbrc tener esto como el método predeterminado para la visualización de objetos:

require "awesome_print" 
AwesomePrint.irb! 
+0

¡Me gusta este, buen aspecto Hashes! –

Cuestiones relacionadas