获取创建另一个实例的实例

Tim*_*aas 1 ruby

比方说,我有三个类:A,BC.

C在一个实例A和一个实例上创建一个实例B:

class A; end
class B; end
class C; end

a = A.new
b = B.new

a.c = C.new
b.c = C.new
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式找到父母吗?像这样:

a.c.parent #=> instance of A ( a == a.c.parent )
b.c.parent #=> instance of B ( b == b.c.parent )
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

und*_*gor 7

因为在您的示例中,A.c=尚未定义,您可以将其定义为:

class A
  attr_reader :c

  def c=(x)
    @c = x
    x.parent = self
  end
end
Run Code Online (Sandbox Code Playgroud)

attr_accessor :parent在课堂上定义C.

Ruby中没有"所有权"关系,因此您必须自己建模.