From: Greg Weeks Date: 2007-11-16T18:20:16+09:00 Subject: meta-class subclass relationships Ruby exposes its singleton meta-classes, eg: class < true At the same time, the A class object responds to all the B class object messages. So: class < true B.is_a? $Meta_A -> false A.is_a? $Meta_B -> true B.is_a? $Meta_B -> true Since everything that is_a $Meta_A also is_a $Meta_B, I expected a subclass/superclass relationship. Indeed, I expected the following to be true: $Meta_A.superclass == $Meta_B $Meta_B.superclass == $Meta_Object $Meta_Object.superclass == Class Class.superclass == Module Module.superclass == Object Object.superclass == nil The above superclass chain reflects how a message to the class A object is looked up. What surprised me is that the first two equalities above are false. Should they have been true? FWIW: The superclass of both $Meta_A and $Meta_B is something called #, which is its own superclass and is a subclass of $Meta_Object: $X = $Meta_A.superclass -> # $X == $Meta_B.superclass -> true $X == $X.superclass -> true $X < $Meta_Object -> true -- Posted via http://www.ruby-forum.com/.