Могу ли я узнать, на какой объект ссылаются? - PullRequest
0 голосов
/ 12 января 2010

Если у меня есть два объекта, на один ссылаются в другом. Тогда в первом объекте я могу написать метод, который даст мне, на какие другие объекты он ссылается?

Ответы [ 2 ]

2 голосов
/ 12 января 2010

Я не уверен, как это сделать из коробки, но, возможно, вам поможет следующий пост:

Что такое рубиновый объект? (представляя Memprof.dump)

1 голос
/ 12 января 2010

Возможно, копание в ObjectSpace может помочь:

#!/usr/bin/ruby1.8

include ObjectSpace

def print_references_to_foos
  for klass in [Bar, Baz]
    each_object(klass) do |o|
      s = o.inspect
      puts s if s =~ /#<Foo/
    end
  end
end

class Foo
end

class Bar
  def initialize(foo)
    @foo = foo
  end
end

class Baz < Bar
end

foo1 = Foo.new
foo2 = Foo.new
foo3 = Foo.new
bar1 = Bar.new(foo1)
bar2 = Bar.new(foo1)
bar3 = Baz.new(foo2)

print_references_to_foos
# => #<Baz:0xb7e09158 @foo=#<Foo:0xb7e091a8>>
# => #<Bar:0xb7e0916c @foo=#<Foo:0xb7e091d0>>
# => #<Bar:0xb7e09180 @foo=#<Foo:0xb7e091d0>>
# => #<Baz:0xb7e09158 @foo=#<Foo:0xb7e091a8>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...