2010-09-01 196 views
1

我在JRuby中创建了一个群体遗传学仿真系统。从子对象访问父对象的最佳方式

我已经创建了类,如等位基因,基因,有机体,人口。

Population对象包含多个生物体对象(在一个数组中),每个生物体对象都包含多个基因,依此类推。

目前,很容易知道,例如,某个生物体对象具有什么基因对象。但是,如果我只有一个Gene对象,我不知道它属于哪个生物体。

一个解决方案我想到的是:

attr_accessor :name, :parent 
def initialize(name, parent) 
    @name = name 
    @parent = parent #parent will be the parent object 
end 

如果我这样做,将@parent仅仅是内存中的父对象的引用,或会是一个全新的对象?

这是最好的方法吗?有没有另一种更好的方式来做到这一点?

谢谢!

+3

FWIW:我认为这完全是一个JRuby问题,而你的其他标签是无关紧要的。你的问题实质上归结为“@parent = parent是复制引用还是整个对象”,答案完全取决于JRuby的语义。 (在Java中,答案将是:您复制引用,但我不知道JRuby,因此我无法回答您的实际问题。) – 2010-09-01 23:27:24

回答

1

正如你所建议的那样,JRuby会保留对该对象的引用,而不是创建它的副本。

这是一个非常合理的方法来解决这个问题。您保留对您想要引用的对象的引用!