David A. Black wrote: > Hi -- > > On Wed, 11 Aug 2004, Gennady wrote: > > >>David A. Black wrote: >> >> >>>Hi -- >>> >>>On Wed, 11 Aug 2004, Gennady wrote: >>> >>> >>> >>>>>>At least for "def Foo.f1" and "class << Foo" it is not the same one: one >>>>>>holds "A=10" and another -- "A=20". >>>>> >>>>> >>>>>But only one of them is a singleton class; the other is simply Foo >>>>>itself :-) When you do def Foo.m, 'self' is Foo; but when you do class >>>> >>>>That's where a slight misunderstanding might have occurred: I was >>>>calling "Foo itself" an original singleton class (isn't it? ;-)), and >>>>the one created by "class << Foo" -- an anonymous singleton class of Foo >>>>(i omitted word "anonymous" from my original reply, sorry). >>> >>> >>>I realize that we should probably be saying 'virtual class' instead of >>>'singleton class' (at least, that's what shows up in the error >>>messages when you try to instantiate one) -- but either way, Foo isn't >>>one :-) It's just a regular class. >>> >>> >>>David >>> >> >>Hmm, I like "virtual class" much better. I used term "singleton" for >>describing Foo's class simply to reflect that there's only one instance >>of class "Class" representing "Foo". Seems like my terminology was >>misleading. > > > It's not a very useful usage -- you'd have to call every object in > Ruby a 'singleton' then :-) > > 'Singleton class' has always had the problem that there's also the > Singleton module, so 'singleton class' can also mean a class that > includes that module. 'Virtual class' strikes me as possibly causing > confusion, or false expectations, due to the use of that term for very > different things in other languages. But I don't have a perfect term Neither Java, nor C++ have term "virtual class", rather "abstract class". "virtual" may be member functions in C++ (or implicitly "non-virtual" in Java if you specify "final" keyword for a method). Also, "virtual" may be inheritance specification in C++. So at least for those two languages, term "virtual class" is vacant ;-). > for it by any means. (I think there was a discussion about this on > ruby-core or somewhere lately... couldn't find it in a quick search.) > > > David > Gennady.