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

时间:2013-06-24 11:36:23

标签: ruby

假设我有三个课程: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 )

这样的事情是否存在?

1 个答案:

答案 0 :(得分:7)

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

class A
  attr_reader :c

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

并在班级attr_accessor :parent中定义C

Ruby中没有“所有权”关系,所以你必须自己建模。