Ruby语法,嵌套模块或类

时间:2013-03-08 11:25:53

标签: ruby code-structure

我是Ruby的新手,但一直在查看一些源代码。我在一些源代码中遇到了下面显示的那种结构(模块的名称,类不是真正的类)

module ModuleOne

class MyClass

module CommonModule

# code ....

end # module CommonModule

end # class MyClass

end # module ModuleOne

或此示例

module ModuleOne

  class MyClass

    class MyClassTwo

#code  ............

  end #class MyClassTwo

    end #class MyClass

      end #module ModuleOne

从我的阅读到目前为止,我知道在模块中包装类,但我还没有听说过如上所示的包装类型(模块内部的模块或类中的类)。请问, 这是一种良好的做法吗? 2.以这种方式构造代码有什么好处?

感谢您提出任何意见或建议

戴夫

1 个答案:

答案 0 :(得分:4)

对封装常量进行嵌套,这些模块是特殊情况。换句话说,它们用于命名空间。如果希望特定模块只能在某个模块的上下文中访问,则应该进行嵌套。通过这样做,默认情况下不会从外部访问该模块;你必须在命名空间前加上这样做。当你有太多的嵌套层,或者当模块体很长时,在代码中很难跟随它,所以在这种情况下,一个好方法是编写整个命名空间。

module ModuleOne
  ...
end

class ModuleOne::MyClass
  ...
end

class ModuleOne::MyClass::MyClassTwo
  ...
end