Как добавить определенный класс во время выполнения? - PullRequest
0 голосов
/ 27 января 2019

Можно ли использовать prepend для созданных экземпляров классов во время выполнения?Как и, например, мне нужно предварительно добавить определенный класс, основанный на значении переданных параметров, чтобы инициализировать метод ..

ex (если prepend разрешено вызывать при инициализации):

def initialize(param)
    prepend TestB if param == 2
    prepend TestC if param == 3
end

, но изКонечно, это приведет к ошибке:

NoMethodError: undefined method `prepend' for .. etc

Как мне этого добиться?Мне нужно аккуратно переопределить некоторые методы, в то же время создавая экземпляр одного и того же класса.

1 Ответ

0 голосов
/ 27 января 2019

prepend - это метод, принадлежащий Module, поэтому он не может быть вызван для экземпляров класса (где вы находитесь внутри метода initialize).Если вы хотите, вы можете использовать extend (метод, принадлежащий Object), чтобы смешивать различные реализации методов с экземпляром вашего класса.

Лично я бы рассмотрел этобыть своего рода Контрольной парой и, скорее, стараться избегать этого.В зависимости от конкретной ситуации, заводской или адаптерный рисунок может быть более подходящим.

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