Ruby 中同名的模块和 Class

Module and Class with the same name in Ruby

比如说,我有 模块 'A' 模块 'B'。在模块B中,有一个class叫做'A',就像模块[=41] =]。在这个 class 中,我想引用 A::ClassC,其中 'A' 是模块,但我收到错误因为它认为我引用的是 class A,它没有 ClassC。我可以解决这个问题吗?或者我需要重命名一个吗? (我想尽可能避免这种情况)

编辑:

这里是我当前实现的一个例子,但不能供参考。

    >moduleA
        >classC.rb
    >moduleB
        >classA.rb
        >classB.rb

classA.rb:

module B
    class A < classB

    do something with A::ClassC

    end
end

错误是uninitialized constant ModuleB::ClassA::ClassC

使用范围解析运算符 :: 来决定可以从哪个范围找到 class C
在您的情况下,您需要一个 "main" 范围,因此使用 :: 运算符作为前缀 - ::A::C

module A
  class C
    def name
      "I am class C from module A"
    end
  end
end

module B
  class A
    def test
      ::A::C.new.name
    end
  end
end

name = B::A.new.test
# => "I am class C from module A"