类名的哪一部分是模块?

时间:2017-11-26 17:37:30

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

在rails项目中,我有类:

class Police::Office 
end

现在我在同一名称空间中创建一个Interactor:

class Police::Office::ConstructInteractor 
end 

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

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

它是否像以下模块中的类:

module Police::Office
  class ConstructInteractor 
  end
end 

或者班上的一个班级?

class Police::Office
  class ConstructInteractor 
  end
end

谢谢

1 个答案:

答案 0 :(得分:2)

  

1。这是允许的吗

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

  

还是会引发姓名冲突?

我不知道这意味着什么,但同样,您可以通过复制和粘贴您发布的代码并运行它来轻松地自行测试。

  

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

     

它是否像以下模块中的类:

module Police::Office
  class ConstructInteractor 
  end
end 

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

  

或者班上的一个班级?

class Police::Office
  class ConstructInteractor 
  end
end

是。但请注意,这是不是“类中的类”。这是类中的常量。在Ruby中,类不像在Beta,gBeta,Newspeak或Scala中那样嵌套(甚至不像Java中那样)。常量Police::Office::ConstructInteractor引用的类与常量Police::Office引用的类之间没有任何关系。