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_dump
setara dengan php di ruby, saya menemukan itu pp
jauh usaful dalam kasus itu, lihat di sini - stackoverflow.com/questions/6501506/ruby-inspect-readability/…
Anda mungkin menemukan penggunaan methods
metode 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_methods
dari kelas 'dalam pertanyaan untuk mendapatkan metode yang unik:(String.instance_methods - Object.instance_methods).sort
.methods.sort
sangat bermanfaat. Apakah ada cara 'pintar' untuk dengan cepat menunjukkan metode yang (samar-samar) unik untuk objek tertentu? Misalnya metode seperti .to_s
mungkin 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::Result
objek, dan ingin segera menilai metode yang mungkin saya temukan berguna.
The to_yaml
Metode tampaknya kadang-kadang berguna:
$foo = {:name => "Clem", :age => 43}
puts $foo.to_yaml
kembali
---
:age: 43
:name: Clem
(Apakah ini tergantung pada beberapa YAML
modul yang dimuat? Atau apakah itu biasanya tersedia?)
to_yaml
membutuhkan 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_json
tidak 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_name
tidak bekerja, tetapi object.attributes
tidak untuk mendapatkan hash kunci dan nilai yang bagus. Ini membantu saya, terima kasih!
inspect
metode 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_s
jika tidak menemukan metode inspeksi `.