2010-05-14 2 views
3

Je suis familier avec le concept de l'imbrication des classes et des modules dans un autre module et de les regrouper dans un espace de noms. Quelle est l'idée/but derrièreRuby imbriqué classes et modules

  1. cours Nesting dans une autre classe

    class A 
        class B 
        def method_B 
         ... 
        end 
        end 
    end 
    
  2. modules Nesting dans une autre classe

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

grâce, cendres

Répondre

1

Il s'agit de regrouper les préoccupations connexes tout en exposant la sémantique sensible. À titre d'exemple de numéro 1, une requête HTTP :: Request (classe de requête incorporée dans une classe de protocole HTTP plus grande) est très différente d'une requête FTP :: Request. Avec les modules, il permet l'idiome rubis commun de Behavior :: InstanceMethods et Behavior :: ClassMethods pour gérer les mixins.

+0

Ce sont des exemples de classes dans les modules, bien que la question concerne les classes dans les classes. – Chuck

+0

HTTP ne doit pas nécessairement être un module. Cela pourrait être une classe en fonction de la façon dont vous concevez le programme. –

+0

Donc c'est juste un espace de noms et n'a pas de comportement spécial comme, seulement la classe englobante peut créer des instances de la classe incluse? – user290870

3

Les classes sont également des espaces de noms, c'est donc la même idée. La classe est une sous-classe de Module, donc si vous l'obtenez dans le contexte des modules, vous l'obtenez aussi dans le contexte des classes.

Questions connexes