Alle 22:35, marted9 gennaio 2007, Shea Martin ha scritto: > def clone > rslt = BuildConfig.new > > self.instance_variables.each do |member| > rslt.instance_variable_set( member, > self.instance_variable_get(member).clone ) > end > > return rslt > end > > This clone method bombs if any of the instance variables are FixNums, > Floats, boolean, etc. Is there a way in my loop to know if an instance > variable supports 'clone'? > > ~S I don't know whether there is a way to know in advance if a variable supports clone, so I'd say: try it. If it works, good. If it doesn't, it'll raise an exception, which you can rescue: def clone rslt = BuildConfig.new self.instance_variables.each do |member| begin rslt.instance_variable_set( member, self.instance_variable_get(member).clone ) rescue Exception: rslt.instance_variable_set(member, self.instance_variable_get(member)) end end return rslt end I'm not an expert, so there may be better ways to do this I don't know, but this should work. Stefano