我知道Ruby中的::
是作用域解析运算符,用于访问模块和类中的方法,但是使用::
命名类是否合适?
例子
class Foo::Bar::Bee < Foo::Bar::Insect
def a_method
[...]
end
end
最佳答案
如果用``适当''来表示您在语法上是正确的-是。
这样做没有内在的错误,如果您要在一个单独的文件中定义一个子类(下面的示例),那么这是一种相对普遍的做法。
# lib/foo.rb
module Foo
end
# lib/foo/bar.rb
class Foo::Bar
end
但是,如果您不能确定父模块或类已经存在,则我将避免以这种方式定义类,因为由于父类(例如
NameError
)不存在,您将得到一个Foo
。因此,您不会看到遵循这种简洁模式的许多开源软件。孤立地,这是行不通的:
class Foo::Bar
end
但是,这将起作用:
module Foo
class Bar
end
end