Jawaban:
Mungkin:
puts variable.inspect
server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil . itu tidak akan berfungsi untuk objek paling kompleks.
var_dumpsetara dengan php di ruby, saya menemukan itu ppjauh usaful dalam kasus itu, lihat di sini - stackoverflow.com/questions/6501506/ruby-inspect-readability/…
Anda mungkin menemukan penggunaan methodsmetode yang mengembalikan array metode untuk objek. Ini tidak sama dengan print_r, tetapi masih berguna di kali
>> "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"]
instance_methodsdari kelas 'dalam pertanyaan untuk mendapatkan metode yang unik:(String.instance_methods - Object.instance_methods).sort
.methods.sortsangat bermanfaat. Apakah ada cara 'pintar' untuk dengan cepat menunjukkan metode yang (samar-samar) unik untuk objek tertentu? Misalnya metode seperti .to_smungkin sering muncul sehingga tidak semua yang berguna, tetapi beberapa itu bisa sangat berguna untuk mengetahui metode tertentu untuk objek tertentu. Terutama dalam kasus-kasus yang tidak jelas. Apakah ada cara untuk mendapatkannya dengan cepat? (contohnya, saya memiliki PG::Resultobjek, dan ingin segera menilai metode yang mungkin saya temukan berguna.
The to_yamlMetode tampaknya kadang-kadang berguna:
$foo = {:name => "Clem", :age => 43}
puts $foo.to_yaml
kembali
---
:age: 43
:name: Clem
(Apakah ini tergantung pada beberapa YAMLmodul yang dimuat? Atau apakah itu biasanya tersedia?)
to_yamlmembutuhkan model YAML untuk dimuat. Ini adalah bagian dari pustaka standar Ruby.
p object
Untuk setiap objek, langsung tulis obj.inspect diikuti oleh baris baru ke output standar program.
Jika Anda mencari hanya variabel instan dalam objek, ini mungkin berguna:
obj.instance_variables.map do |var|
puts [var, obj.instance_variable_get(var)].join(":")
end
atau sebagai one-liner untuk menyalin dan menempel:
obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}
menempatkan foo.to_json
mungkin berguna karena modul json dimuat secara default
to_jsontidak dimuat secara default di 1.8.7 atau 1.9.2.
Jika Anda ingin mencetak JSON yang sudah indentasi :
require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))
object.attribute_names
# => ["id", "name", "email", "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", Tue, 02 Jun 2015 00:16:03 UTC +00:00, Tue, 02 Jun 2015 00:22:35 UTC +00:00, "$2a$10$gUTr3lpHzXvCDhVvizo8Gu/MxiTrazOWmOQqJXMW8gFLvwDftF9Lm", "2dd1829c9fb3af2a36a970acda0efe5c1d471199", true, nil, nil, nil, nil, nil, nil, nil]
undefined method 'attributes' for ...
object.attributes_nametidak bekerja, tetapi object.attributestidak untuk mendapatkan hash kunci dan nilai yang bagus. Ini membantu saya, terima kasih!
inspectmetode ke kelas Anda memungkinkan Anda untuk menentukan bagaimana atribut kelas ditampilkan, daripada bergantung pada output default. Banyak kelas yang tidak mengimplementasikannya dengan baik, tetapi bisa sangat berguna saat melakukan debugging. Ruby akan kembali keto_sjika tidak menemukan metode inspeksi `.