From: Dave Burt Date: 2006-06-11T13:05:12+09:00 Subject: Re: Dynamic class change? Mark Noworolski wrote: > I have a stream I'm listening to that lots of similar things speak on, each of which also identifies itself with a unique MAC. > Say, I have 3 objects organized something like this: > Class Nic > End > > Class Nic2 < Nic > Etc. > End > > Class Nic3 < Nic2 > Etc. > End > > As time passes, when I hear a new MAC start talking, I dynamically create a corresponding object. So, if the first thing I hear is something a Nic says, a Nic object can spring into existence, ditto for Nic2, etc. So far, seems reasonable. > > However, the similar things will sometimes appear as a Nic, then say something new and exciting that indicates that they are actually Nic2 objects (or Nic3, for example). > > The simple/crude solution is just to have one nic object with a '@type' class variable that can get changed once new information appears. Also the @type variable could be queried to figure out what the object is/does. > > But this just doesn't seem like the ruby way. Is there something obvious I should be doing that is sensible and cleaner? You can deal with this by adding a copy constructor, at least to the subclasses (but it can be inherited). class Nic def initialize(nic = nil) if nic self.property = nic.property #... end end end class Nic2 < Nic end nic = Nic.new nic = Nic2.new(nic) Cheers, Dave