Ruby: ¿Cómo hacer que la estructura de impresión IRB para arrays y hashes

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

  •  22-08-2019
  •  | 
  •  

Pregunta

Cuando hago una nueva matriz / hachís en IRB , imprime un formato agradable para mostrar la estructura, ej.

["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 que es? Quiero ser capaz de ver las variables en IRB en el primer formato, no el segundo.

¿Fue útil?

Solución

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

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

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

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

Otros consejos

Otra cosa que puede hacer es utilizar el método y el cual 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

La impresión bonita funciona bien, pero el Awesome_Print joya es aún mejor! Tendrá que require awesome_print pero maneja los hashes y arrays anidados muy bien, además de ellos colores en el terminal usando 'ap' en lugar de 'p' a pone 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!

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 utilizar el método de p () para imprimirlos:

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

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"]} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top