Frage

Wenn ich eine neue Array / hash in irb , druckt es ein schönes Format, um die Struktur zu zeigen, ab.

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

... aber wenn ich versuche, mit puts heraus meine Variablen zu drucken, erhalte ich sie zusammenbrach:

value1
value2
value3
key1
value1

Ich nehme an, dass puts nicht der richtige Befehl ist für das, was ich will, aber was ist? Ich möchte in der Lage sein, meine Variablen in irb im ersten Format, nicht die zweite Ansicht.

War es hilfreich?

Lösung

Sie können entweder die inspect Methode verwenden:

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

Oder, noch besser, verwenden Sie die pp (ziemlich print) lib:

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

Andere Tipps

Eine andere Sache, die Sie tun können, ist die y Methode verwenden, die Eingabe in Yaml umwandelt. Das erzeugt sehr schön Ausgang ...

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

Der hübsche Druck funktioniert gut, aber das Awesome_Print Juwel ist noch besser! Sie müssen require awesome_print aber es Griffe verschachtelten Hashes und Arrays schön und Farben, um sich im Terminal ‚ap‘ anstelle von ‚p‘ mit bis setzt die Ausgabe.

Sie können auch sie in Ihrem ~ / .irbrc dies als Standard-Methode haben Objekte für die Anzeige:

require "awesome_print"
AwesomePrint.irb!

Versuchen .inspect

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

Sie können auch den p () -Methode verwenden, um sie zu drucken:

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

Mein persönliches Werkzeug der Wahl hierfür ist ‚Pretty Print‘ und die pp Methode

require 'pp' # <- 'Pretty Print' Included in ruby standard library
pp({ :hello => :world, :this => ['is', 'an', 'array'] })
=> {:hello=>:world, :this=>["is", "an", "array"]} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top