2010-05-14 111 views
3

我所熟悉的嵌套类和模块的另一个模块中的概念,并在命名空间中对其进行分组。红宝石嵌套类和模块

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

感谢, 灰后面是什么

  1. 嵌套类的想法/目的在另一个类中

    class A 
        class B 
        def method_B 
         ... 
        end 
        end 
    end 
    
  2. 嵌套模块在另一个类中

回答

1

这是关于在揭示明智的语义的同时分组相关的问题。作为数字1的示例,HTTP :: Request(嵌入在更大的HTTP协议类中的请求类)与FTP :: Request完全不同。通过模块,它启用了用于处理mixin的Behavior :: InstanceMethods和Behavior :: ClassMethods的通用ruby惯用语。

+0

虽然这些是模块中类的示例,但问题是关于类中的类。 – Chuck 2010-05-14 15:50:11

+0

HTTP不一定是一个模块。这可能是一个班,具体取决于你设计程序的方式。 – 2010-05-15 00:22:55

+0

所以它只是一个命名空间,并没有特殊的行为,只能包含可以创建封闭类的实例的类? – user290870 2010-05-15 20:08:58

3

类也是命名空间,所以它是一样的想法。 Class是Module的一个子类,所以如果你在模块的上下文中获得它,你也可以在类的上下文中获得它。