Hi --

On Sun, 14 Aug 2005, gabriele renzi wrote:

> Hi gurus and nubys,
>
> is there a way to add a constant into an object which is not a module/class?
>
> Basically what I'd like is some kind of append_features/include that works on 
> non-module objects.
>
> Is my only chance to mess up with the singleton class by myself, or there is 
> some existing method for this?

If I understand you correctly, I think Kernel#extend is what you need:

   irb(main):001:0> s = ""
   => ""
   irb(main):002:0> module M; X=1; end
   => 1
   irb(main):003:0> s.extend(M)
   => ""
   irb(main):004:0> (class << s; self; end)::X
   => 1

I think that's the closest thing corresponding to "adding a constant"
to an arbitrary object (adding it to the object's singleton class).


David

-- 
David A. Black
dblack / wobblini.net