假设我有这样的设置:
class Foo
attr_accessor :bar
def initialize
@bar = Bar.new
end
end
class Bar
def bar_method
self.class # => Bar
whatever???.class # => Foo
end
end
foo = Foo.new
foo.bar.bar_method
我知道我可以这样设置方法:
def bar_method(selfs_self)
selfs_self.class # => Foo
end
并调用如下方法:foo.bar.bar_method(foo)
以获取我想要的。但这似乎是多余的。在bar_method
内,有什么方法可以获取对foo
的引用,而无需特别传递对它的引用?
答案 0 :(得分:2)
否。
通常,这是通过在初始化子对象时将引用传递给父对象来完成的,例如:
class Foo
attr_accessor :bar
def initialize
@bar = Bar.new(self)
end
end
class Bar
attr_reader :foo
def initialize(foo)
@foo = foo
end
def bar_method
self.class # => Bar
foo.class # => Foo
end
end