From: Robert Dober Date: 2006-11-05T03:18:40+09:00 Subject: Re: Redefining a class ------=_Part_39450_25916412.1162664316730 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 11/4/06, ara.t.howard@noaa.gov wrote: > > On Sat, 4 Nov 2006, Robert Dober wrote: > > > Hi all > > > > Recently we had a thread where we talked about redefining a class. > > The usefuleness of that did not come into my mind before. > > > > Does somebody know a way to redefine a class (without the "already > > initialized constant " warning)? > > And if there is none, which I suspect, might it not be nice to have one? > > > c = Class.new{ > def initialize > @x = 'foo' > end > } > o = c.new > > c = Class.new{ > def initialize > @x = 'bar' > end > } > o = c.new > > ;-) > > > -a > -- > my religion is very simple. my religion is kindness. -- the dalai lama > > Actually I am very disappointed that you cannot read my mind Ara ;) it would be quite antipols to use not constant classnames (wouldn't be there some warnings too BTW?) class C... C=Class.new... works fine save for the warning I would like to get around Here go some ideas: (1) ruby does not insult you for constant redefinition if you assign a reference to Class (arrrghh bad dangerous) (2) allow an explicit syntax for redefining a class (2.a) class A < B *always* redefines the class Pro: Some Gurus expect this behavior anyway :) Cons: Quite implicit (2.b) new class A Pro: Quite POLS and readable Cons: "new" overloaded maybe use "redefine class A" (3) some meta thingies (3.a) const_set does not warn anymore (3.b) Matz gives us a const_undefine for Christmas ;) Ok what you think? Robert -- The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. - George Bernard Shaw ------=_Part_39450_25916412.1162664316730--