расширить модуль с помощью подмодульных методов и констант - PullRequest
0 голосов
/ 02 июля 2018

Я хочу иметь возможность расширять модуль методами и константами подмодуля.

Если я использую extend, я получаю неопределенную константу.

Единственный способ заставить его работать - это использовать extend и include. Я попытался также использовать self.method в субмодуле.

module Car
  module Container
    HOLA = 'Helloo!'
    def testing
      HOLA
    end
  end
  include Container
  extend Container
end

Так что оба должны работать:

Car.testing # Hello!
Car::HOLA   # Hello!

Полагаю, это запах кода ... но какие еще способы заставить его работать, вы знаете?

1 Ответ

0 голосов
/ 02 июля 2018

В соответствии с общим описанием, похоже, вы хотите получить доступ к константам и методам вложенного модуля в some_other_class.

Это определение модуля, как упомянуто в посте.

module Car
 module Container
  HOLA = 'Helloo!'
  def testing
   HOLA
  end
 end
end

Теперь предположим, что вы хотите использовать этот метод в каком-то классе, скажем, Vehicle

require 'car' #this is the module file since it is residing in some other file

class Vehicle
  extend Car

  def test
    Car.testing
  end
end

Теперь вызов Vehicle.new.test напечатает

"Helloo!"

Надеюсь, это поможет !!

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