首页 > 解决方案 > 命名 Ruby 类和将其包装在模块中有什么区别?

问题描述

class Baz
end

module Foo
end

module Foo
  class Bar1 < Baz
    # ...
  end
end

class Foo::Bar2 < Baz
  # ...
end

我曾想过Bar1并且Bar2应该表现相同,因为我认为包装类声明module Foo...end和命名类Foo::只是语法变体。但是,我看到这两个在实际应用程序中的行为不同,所以我一定是错的!

Bar1和之间的行为到底有什么区别(如果有的话)Bar2

第二个问题:他们有一个明确声明的超类( )这一事实是否Baz有所作为,或者这是一个红鲱鱼?

标签: rubynamespacesconstants

解决方案


推荐阅读