2011-01-31 71 views
4

我想了解模块中定义的类如何知道模块的常量。下面是我的意思的例子:在Ruby中,模块中定义的类如何知道模块的常量?

module Car 
    class Wheel 
    end 

    class Seat 
    p Wheel  # Car::Wheel 
    end 
end 

我知道这是显而易见的,但因为车轮是无处座椅的层次,我不明白它如何能够访问它。

+1

由于它们具有相同的父命名空间,所以它在我看来Wheel * is *在Seat的层次结构中作为对等体。 – maerics 2011-01-31 20:59:57

回答

6

如果引用类常量,红宝石会寻找它第一次在同一模块中,然后在根目录下,如果没有找到。

所以,因为两者SeatWheelCar模块中,如果你看Wheel,它会首先寻找Car::Wheel,然后::Wheel。由于Car::Wheel存在,您可以获得该参考。