Robert Klemme
6/2/2007 5:02:00 PM
On 02.06.2007 18:30, Dorren wrote:
> Q1: in pick axe book page 364, it talks about metaclass should be a
> singleton class. but when I run the following code, class's object_id
> are the same for all instance, but the metaclass object_id are
> different for each object instance, is the code wrong or what?
The term "singleton class" has been discussed a lot. Other names have
been suggested but I guess "singleton class" sticks because the book
uses it. :-)
Basically it just means that there is one singleton class per instance.
This class is invisible most of the time - you basically see it only
when you do class<<self. You can imagine that this class sits between
the instance and the original class (the return value of self.class).
<snip/>
> Q2: from pick axe book 364-367, it used singleton, metaclass, and
> virtual class definition interchangeably. are they all the same thing
> or not?
Um, I would have to check with my copy which I don't have here with me.
But it is very possible.
> Q3: from page 365,
> "To handle per-object attributes, Ruby provides a classlike some-
> thing for each object that is sometimes called a singleton class."
> if runtime create something new for EACH object, how can it be called
> singleton?
See my explanation above.
Kind regards
robert