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.

È stato utile?

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"]} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top