我想知道在 ruby 中创建双向父子关系的最佳方法是哪种。例如,下面的代码:
class Bar
def initialize(name)
@name = name
end
end
class Foo
attr_accessor :children
def initialize(names = %w(john ben maudy))
@children = names.map{|n| Bar.new(n)}
end
end
有了这个,很容易从一个Foo
实例到它的Bar
孩子。但它没有相反的方式。例如:
# Instanciates a Foo and get his first son
bar = Foo.new.children.first
# bar can't get to his parent. Essentially, I want
bar.foo
到目前为止,我唯一的想法是传递self
方法Bar#new
,以保持对bar
对象的引用,但我想避免这种情况。你能给我解释一个更好的方法吗?
编辑
从谷歌我可以找到调用者方法,它给了我行号。但是我一直在寻找一个对象引用,比行号更抽象一点。
编辑 2
编辑 3
这种撬动的衍生产品似乎是最合适的。如果有人能在没有宝石的情况下找到一种方法,我可能会用它来回答我自己的问题。