2010-11-07 39 views
4

對於不需要使用'::'來使用模塊中的類的最佳方式的任何建議(如下所示)?獲得模塊中類的可見性的最佳方式

使用import/mixin?這不是多繼承的情況嗎?只是想簡化代碼。在這種情況下使用導入有沒有副作用?

module Shapes 
    class Circle 
    class RightTriangle 
end 

class ShapeUser 
    def go 
     shape1 = Shapes::Circle.new 
     ** prefer to use just shape1 = Circle.new 
     .... 
end 

回答

5

include模塊:

class ShapeUser 
    include Shapes 

    def go 
    shape1 = Circle.new 
    # ... 
    end 
end 

所有這一切都發生在這裏的是你正在CircleRightTriangle等可用於該類ShapeUser的常量。這是include的完全合理使用:)

+1

謝謝你!出於某種原因,我無法理解我的表現。我想也許是其他語言的回憶。 – Gary 2010-11-07 04:24:52

+1

我想給你投票,但新來的,所以似乎還沒有足夠的分數。 – Gary 2010-11-07 04:29:57

+2

@Gary - 不要忘記點擊欄杆回答旁邊的複選標記將其標記爲已接受。 – 2010-11-07 04:44:10

1

請注意,僅僅因爲在Ruby中多重繼承是不可能的,而混合插件通常會被吹捧以允許您實現類似的功能 - 這並不意味着所有用途混合模塊和模塊必須適用於多重繼承的情況!

這是一個美妙的地方使用include

+0

只需再提一點就可以了 - 如果你有嵌套的模塊和類,include必須放在需要visibiliy的特定級別(模塊或類)。再次感謝您的幫助。會接受答案;我會先簡要確定這個筆記是有意義的。 – Gary 2010-11-07 05:06:03

+0

沒問題。你可以做的其他一些巧妙的事情包括在名爲'included'和'extended'的模塊上定義類方法 - 當它們被包含或擴展到另一個類/模塊時被調用,並且它們接受一個參數,即他們前往的地方。你可以在運行時做一些漂亮的東西! – Ashe 2010-11-07 09:30:07

相關問題