假设我有2个班级
Class Obj1
def initialize(object)
end
end
Class Obj2
def initialize(object)
end
end
我想初始化Obj1和Obj2并将Obj1的实例传递给Obj2的实例,反之亦然。所以,像这样的东西
ob1 = Obj1.new(ob2)
ob2 = Obj2.new(ob1)
我怎样才能实现这种功能?我虽然关于使用attr_accessor并在它们都被初始化之后传递,但这似乎是一个坏主意,因为它使API复杂化。
为什么我要这样做: 这是时间表的包装。 Obj1(Stops)是一个停止列表(Stop),Obj2(Lines)是一个行列表(Line)。 Stop有多个Line对象,因此Stop要求停止特定行。我想故意实现这种循环。我希望能够得到这样的东西:
Stops.first.stop.first.lines.first.stops(依此类推)
整个项目都是一个练习。
答案 0 :(得分:2)
嗯,他们无法在完全相同的时间互相创造。因此必须首先创建一个,然后用于配置另一个。这需要attr_accessor
或类似。
例如:
class Stop
def add_line(line)
line.add_stop(self)
lines << line
end
def lines
@lines ||= []
end
end