1

假设我有三个类ABC

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

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

a.c.parent #=> instance of A ( a == a.c.parent )
b.c.parent #=> instance of B ( b == b.c.parent )

这样的事情存在吗?

4

1 回答 1

7

由于在您的示例中,A.c=无论如何尚未定义,您可以将其定义为:

class A
  attr_reader :c

  def c=(x)
    @c = x
    x.parent = self
  end
end

attr_accessor :parent在类中定义C

Ruby 中没有“所有权”关系,因此您必须自己建模。

于 2013-06-24T11:43:37.020 回答