Rubino: Come fare IRB struttura di stampa per array e hash
Domanda
Quando faccio un nuovo array / hash in IRB , si stampa un bel formato per mostrare la struttura, es.
["value1", "value2", "value3"]
{"key1" => "value1"}
... ma quando provo a stampare le mie variabili utilizzando puts
, ottengo loro sono crollati:
value1
value2
value3
key1
value1
Mi sembra di capire che non è puts
il comando giusto per quello che voglio, ma che cosa è? Voglio essere in grado di vedere le mie variabili in IRB nel primo formato, non il secondo.
Soluzione
È possibile utilizzare il metodo inspect
:
a=["value1", "value2", "value3"]
puts a.inspect
O, meglio ancora, utilizzare il lib pp (abbastanza di stampa):
require 'pp'
a=["value1", "value2", "value3"]
pp a
Altri suggerimenti
Un'altra cosa che puoi fare è utilizzare il metodo y
che converte input in Yaml. Che produce output abbastanza piacevole ...
>> data = { 'dog' => 'Flemeale', 'horse' => 'Gregoire', 'cow' => 'Fleante' }
=> {"cow"=>"Fleante", "horse"=>"Gregoire", "dog"=>"Flemeale"}
>> y data
---
cow: Fleante
horse: Gregoire
dog: Flemeale
La graziosa stampa funziona bene, ma il Awesome_Print gemma è ancora meglio! Si dovrà require awesome_print
ma gestisce gli hash nidificati e array di ben più li colori nel Terminal usando 'ap' invece di 'p' per mette l'uscita.
È inoltre possibile includere nel vostro ~ / .irbrc ad avere questo come il metodo predefinito per la visualizzazione di oggetti:
require "awesome_print"
AwesomePrint.irb!
Prova .inspect
>> a = ["value1", "value2", "value3"]
=> ["value1", "value2", "value3"]
>> a.inspect
=> "[\"value1\", \"value2\", \"value3\"]"
>> a = {"key1" => "value1"}
=> {"key1"=>"value1"}
>> a.inspect
=> "{\"key1\"=>\"value1\"}"
È inoltre possibile utilizzare il metodo p () per stamparli:
>> p a
{"key1"=>"value1"}
Il mio strumento personale di scelta per questo è 'Stampa Pretty' e il metodo pp
require 'pp' # <- 'Pretty Print' Included in ruby standard library
pp({ :hello => :world, :this => ['is', 'an', 'array'] })
=> {:hello=>:world, :this=>["is", "an", "array"]}