我知道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

10-01 07:04
查看更多