From: ahoward Date: 2002-11-11T03:24:40+09:00 Subject: Re: return MyClass.new vs self.type.send :new On Mon, 11 Nov 2002 dblack@candle.superlink.net wrote: > I'm lost. Can you explain what you're trying to do? I'm willing > to go out on a limb and speculate that there's a more idiomatic > (and 'bless'-less :-) way to do it. But first I need a handle on > what "it" is :-) here's an example of 'it' - don't flame it too bad, it's just an example! ;-) #!/usr/bin/env ruby module KlassMethods attr_accessor :k def init k self.k = k end def initialize k self.init k end end class Klass include KlassMethods def Klass.bless o, k oc = o.clone.extend KlassMethods oc.init k oc end end module SubKlassMethods attr_accessor :sk def init k, sk super k self.sk = sk end def initialize k, sk self.init k, sk end end class SubKlass < Klass include SubKlassMethods def SubKlass.bless o, k, sk co = super o, k co = co.extend SubKlassMethods co.init k, sk co end end if $0 == __FILE__ k = Klass.new 42 puts k.k # >> 42 o0 = Object.new b0 = Klass.bless o0, 42 puts b0.k # >> 42 sk = SubKlass.new 42, 'forty two' puts sk.k # >> 'forty two' puts sk.sk # >> 'forty two' o1 = Object.new b1 = SubKlass.bless o1, 42, 'forty two' puts b1.k # >> 42 puts b1.sk # >> 'forty two' kb = SubKlass.bless k, 42, 'forty two' puts kb.k # >> 42 puts kb.sk # >> 'forty two' b0b = SubKlass.bless b0, 42, 'forty two' puts b0b.k # >> 42 puts b0b.sk # >> 'forty two' end -a -- ==================================== | Ara Howard | NOAA Forecast Systems Laboratory | Information and Technology Services | Data Systems Group | R/FST 325 Broadway | Boulder, CO 80305-3328 | Email: ahoward@fsl.noaa.gov | Phone: 303-497-7238 | Fax: 303-497-7259 ====================================