"Bertram Scharpf" <lists / bertram-scharpf.de> schrieb im Newsbeitrag news:20050128104650.GA580 / homer.bertram-scharpf... > Hi, > > Am Freitag, 28. Jan 2005, 19:05:54 +0900 schrieb Robert Klemme: > > > > I guess that's not the same as there is some magic involved with class > > names: > > > > >> c = Class.new > > => #<Class:0x1018ab00> > > >> c.name > > => "" > > >> Foo = c > > => Foo > > >> c.name > > => "Foo" > > >> Foo.name > > => "Foo" > > >> Bar = c > > => Foo > > >> Bar.name > > => "Foo" > > >> c.name > > => "Foo" > > There's nothing magic. The first constant's name that the > class is assigned to will be the classes name. > > c=Class.new #=> #<Class:0x401e8874> > d=c #=> #<Class:0x401e8874> > e=d #=> #<Class:0x401e8874> > F=e #=> F > G=c #=> F > c.name #=> "F" The rule and behavior is clear. The magic is that the class name automatically is set from the identifier of the constant - normally an object (and a class is an object) does not get to know when it is assigned to a var/const and to which var/const it is assigned. So obviously for const assignments there is special code that sets a class's name if the assigned instance is a class. Kind regards robert