Robert Klemme
5/1/2005 7:44:00 PM
"ts" <decoux@moulon.inra.fr> schrieb im Newsbeitrag
news:200505011024.j41AOgMw007111@moulon.inra.fr...
>>>>>> "R" == Robert Klemme <bob.news@gmx.net> writes:
>
> R> Well, yes, that's what I concluded. But why is that so? What's the
> R> reasoning behind this? After all, both singleton classes are just
> there for
> R> a single object although that happens to be a class instance. This
> change
> R> might even break some code, I'm not sure.
>
> Well, I've tried one day to give a *STUPID* example
>
> Imagine that you have
>
>
> class Class
> def new(*args, &block)
> obj = allocate
> obj.send(:initialize, *args, &block)
> obj
> end
> end
>
> class Array
> def self.allocate
> # do some magic here to create the type array
> end
> end
>
> Now if you write
>
> class A < Array
> end
>
> A.new
>
> You want with `A.new' re-use the method ::allocate which is defined in the
> singleton class (Array). This mean that (A) must inherit from (Array)
Sounds reasonable. Thanks for that example!
Still, this seems quite some change to me, doesn't it? I guess this
inheritance does only work for class instance singleton classes - at least
that seems the most reasonable (only?) way to do it to me. That would also
reduce the likelyhood of code breakage. .... It seems, incombatibility
isn't that big issue as I thought initially. That's nice!
Kind regards
robert