лучший способ получить видимость для класса в модуле - PullRequest
4 голосов
/ 07 ноября 2010

Какие-либо предложения для лучшего способа не использовать '::' для использования класса в модуле (как показано ниже)?

Использовать импорт / миксин? Это не случай множественного наследования, хотя? Просто хочу упростить код. Есть ли побочный эффект от использования импорта для этого случая?

module Shapes  
    class Circle  
    class RightTriangle  
end

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

Ответы [ 2 ]

5 голосов
/ 07 ноября 2010

include модуль:

class ShapeUser
  include Shapes

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

Все, что здесь происходит, - это предоставление констант Circle, RightTriangle и т. Д. Для класса ShapeUser.Это совершенно разумное использование include:)

1 голос
/ 07 ноября 2010

Обратите внимание, что только потому, что множественное наследование в Ruby невозможно, а дополнения часто рекламируются, чтобы позволить вам достичь чего-то похожего, это не означает, что все варианты использования дополнений и модулей должны поэтому случаи наследования!

Это прекрасное место для использования include.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...