If your object doesn't have singleton methods you can use this construct: Marshal.load(Marshal.dump(a)) Cheers, Kent. On Dec 10, 2004, at 2:59 PM, Brian Schröäer wrote: > Hello Group, > > I sometimes which to make a deep copy of an object. I know I could use > Marshal, > but thats slow so I want to write a routine #deep_copy. (Or should I > overwrite > #dup ?) > > Now the question is, how do you write those. I could use this: > > class A > ... > def deep_copy > result = self.dup > result.field1 = self.field1.deep_copy > ... > end > end > > or > > class A > def initialize(field1 = 'default value', ...) > @field1 = field > ... > end > > def deep_copy > self.new(@field1.deep_copy) > end > end > > Which allows me to use instance variables. > > Is there something more elegant. What do you prefer? Am I on the right > track? > > Best regards, > > Brian > > -- > Brian Schröäer > http://www.brian-schroeder.de/ >