Hi --

On Wed, 25 Jan 2006, Eero Saynatkari wrote:

> Vivek wrote:
>> Hi,
>> can someone explain this.
>>
>> irb(main):013:0> Class.instance_methods
>> => ["superclass", "new"]
>> irb(main):014:0> Class.class
>> => Class
>>
>> I guess Class is an object(an instance of Class?)  but its of type
>> Class. How can an object's type be an object itself.?
>
> The traditional response is 'magick' :) While it is useful to
> say that all instances are Objects and Object is an instance of
> class Class which itself is an Object (the class of which is Class),
> at some point there has to be a limit to how deep the recursion
> goes. Because ruby is implemented in C, the language design allows
> this kind of 'shortcutting'.
>
> To be productive, you sort of just have to accept this and know the
> implications of Class being an Object of Class and so on. You can
> don some super-chromatic peril-sensitive sunglasses if you like :)

I don't think any peril is involved (though lately all discussions
seem to lead to talking about shooting in foot, running with scissors,
etc. :-)  It's just that there's some circularity at the top of the
class/module hierarchy, for the sake of bootstrapping the whole
system.


David

-- 
David A. Black
dblack / wobblini.net

"Ruby for Rails", from Manning Publications, coming April 2006!
http://www.manning.com/books/black