From: matt@... (matt neuburg) Date: 2006-10-27T08:20:11+09:00 Subject: Re: newbie q on class Foo::Bar wrote: > 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. I'm glad you're weighing in here, since, though this is a common enough Ruby idiom, Rails is the case in point that got me thinking about this. So, for example, have ActionController::Base and ActionController::AbstractRequest something in common (other than being packaged in the same namespace)? Thx - m. -- matt neuburg, phd = matt@tidbits.com, http://www.tidbits.com/matt/ Tiger - http://www.takecontrolbooks.com/tiger-customizing.html AppleScript - http://www.amazon.com/gp/product/0596102119 Read TidBITS! It's free and smart. http://www.tidbits.com