tags:

views:

153

answers:

2

Hi,

I am familiar with the concept of nesting classes and modules within another module and grouping them in a namespace. What is the idea / purpose behind

  1. Nesting classes within another class
class A
  class B
    def method_B
      ...
    end
  end
end

2.Nesting modules within another class

class A
     module c
       def method_c
         ...
       end
     end
   end

thanks, ash

A: 

It is all about grouping related concerns while exposing sensible semantics. As an example of number 1 an HTTP::Request (Request class embedded in a larger HTTP protocol class) is a quite different thing from an FTP::Request. With modules it enables the common ruby idiom of Behavior::InstanceMethods and Behavior::ClassMethods for handling mixins.

Ben Hughes
Those are examples of classes within modules, though, while the question is about classes in classes.
Chuck
HTTP doesn't have to be a module. It could be a class depending on how the way you design the program.
Ben Hughes
So it is just a namespace and has no special behavior like, only enclosing class being able to create instances of the enclosed class?
A: 

Classes are also namespaces, so it's the same idea. Class is a subclass of Module, so if you get it in the context of modules, you also get it in the context of classes.

Chuck