2011-01-31 74 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存在,您可以獲得該參考。