class 名称的哪一部分是模块?

Which part of the class name is a module?

在一个 rails 项目中,我有 class:

class Police::Office 
end

现在我在同一个命名空间中创建一个交互器:

class Police::Office::ConstructInteractor 
end 

1.这是允许的还是会引起名称冲突?

2。 Police::Office::ConstructInteractor 是什么?

它是像这样的模块中的 class 吗:

module Police::Office
  class ConstructInteractor 
  end
end 

或 class 中的 class?

class Police::Office
  class ConstructInteractor 
  end
end

谢谢

1. Is this allowed

当然可以。 类 允许包含常量。 (顺便说一句:您自己尝试一下只需要几秒钟。)

or can it provoke name clashes?

我不知道那是什么意思,但同样,您只需复制并粘贴您发布的代码并 运行 即可轻松自行测试。

2. What is Police::Office::ConstructInteractor?

Is it a class in a module like:

module Police::Office
  class ConstructInteractor 
  end
end 

当然不是。您之前将 Police::Office 定义为 class,因此它显然是 class.

Or a class in a class?

class Police::Office
  class ConstructInteractor 
  end
end

是的。但注意这是不是一个"class in a class"。这是 class 中的 常量 。在 Ruby 中,classes 不像在 Beta、gBeta、Newspeak 或 Scala 中那样嵌套(甚至不像在 Java 中那样)。常量 Police::Office::ConstructInteractor 引用的 class 和常量 Police::Office.

引用的 class 之间没有任何关系