我是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.以这种方式构造代码有什么好处?
感谢您提出任何意见或建议
戴夫
答案 0 :(得分:4)
对封装常量进行嵌套,这些模块是特殊情况。换句话说,它们用于命名空间。如果希望特定模块只能在某个模块的上下文中访问,则应该进行嵌套。通过这样做,默认情况下不会从外部访问该模块;你必须在命名空间前加上这样做。当你有太多的嵌套层,或者当模块体很长时,在代码中很难跟随它,所以在这种情况下,一个好方法是编写整个命名空间。
module ModuleOne
...
end
class ModuleOne::MyClass
...
end
class ModuleOne::MyClass::MyClassTwo
...
end