在Ruby中,模块中定义的类如何知道模块的常量?

ms1*_*123 4 ruby module constants hierarchy

我试图理解模块中定义的类如何知道模块的常量.这是我的意思的一个例子:

module Car
  class Wheel
  end

  class Seat
    p Wheel        # Car::Wheel
  end
end
Run Code Online (Sandbox Code Playgroud)

我知道这很明显,但由于Wheel在Seat的层次结构中无处可去,我不明白它是如何访问它的.

Chr*_*ald 6

如果你引用一个类常量,Ruby将首先在同一个模块中查找它,然后在根目录中找不到它.

所以,因为这两个SeatWheel是在Car模块,如果你看Wheel,它会首先寻找Car::Wheel,然后::Wheel.既然Car::Wheel存在,你就得到了这个参考.