Nasıl konsola bir nesnenin alanları dökümü mı?

oy
211

Basit bir Ruby komut dosyası çalıştırıyorum zaman konsola bir nesnenin alanları dökümü için en kolay yolu nedir?

PHP ile benzer bir şey arıyorum print_r()yanı diziler ile birlikte çalışacaktır.

Oluştur 09/12/2008 saat 23:55
kaynak kullanıcı
Diğer dillerde...                            


9 cevaplar

oy
338

Muhtemelen:

puts variable.inspect
Cevap 10/12/2008 saat 00:08
kaynak kullanıcı

oy
49

Eğer bir kullanım bulabilir methodsbir nesne için yöntemler bir dizi döner bir yöntem. Bu aynı değil print_rzamanlarda, ama yine de yararlı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"]
Cevap 10/12/2008 saat 00:33
kaynak kullanıcı

oy
43

to_yamlYöntem bazen yararlı gibi görünüyor:

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

puts $foo.to_yaml

döner

--- 
:age: 43
:name: Clem

(Bu, bazı bağlı mı YAMLyüklenen modülün? Ya da o tipik mevcut olurdu?)

Cevap 07/10/2009 saat 00:54
kaynak kullanıcı

oy
28
p object

Için Yakut doc p.

p(*args) public

Her nesne için doğrudan programın standart çıkışa sonrasında bir yeni satır obj.inspect yazar.

Cevap 10/12/2008 saat 04:34
kaynak kullanıcı

oy
12

Eğer nesnede sadece ö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 kopya ve yapıştırma için tek astar olarak:

obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}
Cevap 14/01/2013 saat 16:23
kaynak kullanıcı

oy
9

foo.to_json koyar

json modülü varsayılan olarak yüklenir beri kullanışlı olabilecek

Cevap 20/08/2010 saat 10:55
kaynak kullanıcı

oy
3

Eğer zaten yazdırmak isterseniz girintili JSON :

require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))
Cevap 17/11/2016 saat 08:26
kaynak kullanıcı

oy
2

Ben benzer bir şey arıyordu çünkü bu iş parçacığı karşılaştım. Ben yanıtları seviyorum ve .to_hash yöntemi test edilmiş ve çok kullanım örneği için gerçekten iyi çalıştı bu yüzden bana bazı fikirler verdi. soo:

object.to_hash

Cevap 21/07/2017 saat 13:53
kaynak kullanıcı

oy
-1
object.attributes_name

=> [ "Id", "ad", "e-posta", "created_at", "updated_at", "password_digest", "remember_token", "yönetici", "marketing_permissions", "TERMS_AND_CONDITIONS", "devre dışı", "black_list" "zero_cost", "password_reset_token", "password_reset_sent_at"]

object.attributes.values

=> [1, "tom", "tom@tom.com", Sal, 2 Haziran 2015 00:16:03 UTC 00: 00, Sal, 2 Haziran 2015 00:22:35 UTC 00: 00, " $ 2a $ 10 $ gUTr3lpHzXvCDhVvizo8Gu / MxiTrazOWmOQqJXMW8gFLvwDftF9Lm", "2dd1829c9fb3af2a36a970acda0efe5c1d471199" doğru, sıfır, sıfır, sıfır, sıfır, sıfır, sıfır, nil]

Cevap 03/06/2015 saat 21:56
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more