Yanıtlar:
Muhtemelen:
puts variable.inspect
server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil
. çoğu karmaşık nesne için çalışmaz.
var_dump
yakut bir php eşdeğeri ararken bulunan ilk cevap olduğu için pp
, bu durumda çok yararlı olduğunu buldum , buraya bakın - stackoverflow.com/questions/6501506/ruby-inspect-readability/…
methods
Nesne için bir dizi yöntem döndüren yöntem için bir kullanım bulabilirsiniz . Aynı değil print_r
, ama yine de zaman zaman faydalıdır.
>> "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
Eşsiz yöntemleri elde etmek için söz konusu bir Nesnenin sınıftan çıkarılması genellikle yararlıdır :(String.instance_methods - Object.instance_methods).sort
.methods.sort
çok kullanışlı. Belirli bir nesneye (belirsiz) benzersiz olan yöntemleri hızlı bir şekilde göstermenin 'akıllı' bir yolu var mı? Örneğin, böyle bir yöntem .to_s
sık sık görünebilir, bu yüzden bu kadar kullanışlı değildir, ancak bazıları belirli nesneler için belirli yöntemleri bilmek çok kullanışlı olabilir. Özellikle açık olmayan durumlarda. Bunları hızlı bir şekilde almanın bir yolu var mı? (bu durumda, bir PG::Result
to_yaml
Yöntem kullanışlı bazen gibi görünüyor:
$foo = {:name => "Clem", :age => 43}
puts $foo.to_yaml
İadeler
---
:age: 43
:name: Clem
(Bu, bazı YAML
modüllerin yüklenmesine mi bağlı ? Yoksa normal olarak kullanılabilir mi?)
to_yaml
YAML modelinin yüklenmesini gerektirir. Yine de Ruby standart kütüphanesinin bir parçası.
p object
Her nesne için, programın standart çıktısına doğrudan obj.inspect ve ardından bir yeni satır yazar.
Nesnede yalnızca örnek değişkenleri arıyorsanız, bu yararlı olabilir:
obj.instance_variables.map do |var|
puts [var, obj.instance_variable_get(var)].join(":")
end
veya kopyalama ve yapıştırma için tek astar olarak:
obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}
Önceden girintili bir JSON yazdırmak istiyorsanız :
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
işe yaramadı, ama object.attributes
anahtar ve değerlerin güzel bir karma elde etmek için yapar. Bu bana yardımcı oldu, teşekkürler!
inspect
Sınıfınıza bir yöntem eklemek , varsayılan çıktıya güvenmek yerine sınıfın niteliklerinin nasıl görüntüleneceğini tanımlamanızı sağlar. Birçok sınıf bunu iyi uygulamıyor, ancak hata ayıklama sırasında gerçekten yararlı olabilir. Rubyto_s
bir teftiş yöntemi bulamazsa geri döner .