Frage

Wenn ich ein einfaches Ruby-Skript renne, was ist der einfachste Weg, ein Objekt der Felder auf der Konsole auszugeben?

Ich suche nach etwas ähnliches wie PHP print_r(), die auch mit Arrays arbeiten.

War es hilfreich?

Lösung

Möglicherweise:

puts variable.inspect

Andere Tipps

Sie können eine Anwendung für die methods Methode finden, die eine Reihe von Methoden für ein Objekt zurückgibt. Es ist nicht die gleiche wie print_r, aber immer noch nützlich zu Zeiten.

>> "Hello".methods.sort
=> ["%", "*", "+", "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", "[]", "[]=", "__id__", "__send__", "all?", "any?", "between?", "capitalize", "capitalize!", "casecmp", "center", "chomp", "chomp!", "chop", "chop!", "class", "clone", "collect", "concat", "count", "crypt", "delete", "delete!", "detect", "display", "downcase", "downcase!", "dump", "dup", "each", "each_byte", "each_line", "each_with_index", "empty?", "entries", "eql?", "equal?", "extend", "find", "find_all", "freeze", "frozen?", "grep", "gsub", "gsub!", "hash", "hex", "id", "include?", "index", "inject", "insert", "inspect", "instance_eval", "instance_of?", "instance_variable_defined?", "instance_variable_get", "instance_variable_set", "instance_variables", "intern", "is_a?", "is_binary_data?", "is_complex_yaml?", "kind_of?", "length", "ljust", "lstrip", "lstrip!", "map", "match", "max", "member?", "method", "methods", "min", "next", "next!", "nil?", "object_id", "oct", "partition", "private_methods", "protected_methods", "public_methods", "reject", "replace", "respond_to?", "reverse", "reverse!", "rindex", "rjust", "rstrip", "rstrip!", "scan", "select", "send", "singleton_methods", "size", "slice", "slice!", "sort", "sort_by", "split", "squeeze", "squeeze!", "strip", "strip!", "sub", "sub!", "succ", "succ!", "sum", "swapcase", "swapcase!", "taguri", "taguri=", "taint", "tainted?", "to_a", "to_f", "to_i", "to_s", "to_str", "to_sym", "to_yaml", "to_yaml_properties", "to_yaml_style", "tr", "tr!", "tr_s", "tr_s!", "type", "unpack", "untaint", "upcase", "upcase!", "upto", "zip"]

Die to_yaml Methode scheint manchmal nützlich zu sein:

$foo = {:name => "Clem", :age => 43}

puts $foo.to_yaml

Rückkehr

--- 
:age: 43
:name: Clem

(Hängt dies auf einigen YAML Modul geladen werden? Oder wäre die normalerweise zur Verfügung?)

p object

Ruby-doc für p.

  

p(*args) public

     

Für jedes Objekt schreibt direkt obj.inspect gefolgt   durch eine neue Zeile in die Standardausgabe des Programms.

Wenn Sie sich nur für die Instanzvariablen in dem Objekt suchen, könnte dies nützlich sein:

obj.instance_variables.map do |var|
  puts [var, obj.instance_variable_get(var)].join(":")
end

oder als Einzeiler für das Kopieren und Einfügen:

obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}

setzt foo.to_json

könnte sich als nützlich erweisen, da die json-Modul ist standardmäßig geladen

Wenn Sie ein bereits drucken gegliederte JSON :

require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))

Ich kam in diesem Thread, weil ich für etwas ähnliches suchte. Ich mag die Antworten und sie gaben mir ein paar Ideen, damit ich die .to_hash Methode getestet und funktionierte wirklich gut für den zu Anwendungsfall. soo:

object.to_hash

object.attributes_name

=> [ "id", "name", "E-Mail", "created_at", "updated_at", "password_digest", "remember_token", "admin", "marketing_permissions", "terms_and_conditions", "disable", "black_list", "zero_cost", "password_reset_token", "password_reset_sent_at"]

object.attributes.values

=> [1, "tom", "tom@tom.com", Di, 2. Juni 2015 00.16.03 UTC +00: 00, Di, 2. Juni 2015 00.22.35 UTC +00: 00, "2a $ 10 $ $ gUTr3lpHzXvCDhVvizo8Gu / MxiTrazOWmOQqJXMW8gFLvwDftF9Lm", "2dd1829c9fb3af2a36a970acda0efe5c1d471199", true, null, null, null, null, null, null, null]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top