Hi -- On Fri, 27 Oct 2006, Paul Lutus wrote: > matt neuburg wrote: > >> What's the point of a class-within-a-class? For example, I take it that >> I can say: >> >> class Foo >> class Bar >> def whatever >> ... >> >> And then I can say >> >> my_foo_bar = Foo::Bar.new >> >> For example, isn't that what something like File::Stat is? >> >> My question is, am I right about this, and if so, what's the point of >> doing so? I take it that Bar is not magically related to Foo - it can't >> see Foo's methods or anything like that, can it? So is this merely a way >> of using a class (Foo) as a namespace so that related classes (like Bar) >> are all in one place? Thx - m. > One reason is to create a class that is private. You may be aware that one > wants to separate results from implementation (separate the result from the > method used to produce the result), this can extend to classes that need to > exist, but don't need to be made available as part of the interface. That > way, the programmer can change the class without having to ask what > external effects this might have. The nesting won't give you privacy, though; the class can still be accessed from outside. You could of course not document it, but that's no more true of a nested class than a non-nested one. David -- David A. Black | dblack / wobblini.net Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3] DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4] [1] http://www.manning.com/black | [3] http://www.rubypowerandlight.com [2] http://dablog.rubypal.com | [4] http://www.rubycentral.org