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
オブジェクトの参照を保持することですが、これは避けたいと思います。より良い方法を説明していただけますか?
編集
Google から、呼び出し元のメソッドを見つけることができました。これにより、行番号が得られます。ただし、行番号よりも少し抽象的なオブジェクト参照を探していました。
編集2
Pythonでこれを行うことができます
編集3
pry のこのスピンオフが最適のようです。誰かが宝石なしでこれを行う方法を見つけることができれば、それで私自身の質問に答えるかもしれません.