3

我是 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

从到目前为止的阅读中,我知道在模块中包装类,但我还没有听说过上面显示的包装类型(例如模块中的模块或类中的类)。我可以问一下,1.这是一种很好的做法并且经常这样做吗?2. 以这种方式构造代码有什么好处?

感谢您的任何评论或指点

戴夫

4

1 回答 1

4

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

module ModuleOne
  ...
end

class ModuleOne::MyClass
  ...
end

class ModuleOne::MyClass::MyClassTwo
  ...
end
于 2013-03-08T11:38:48.320 回答