Поддельный тип в Ruby? - PullRequest
       0

Поддельный тип в Ruby?

1 голос
/ 15 июля 2010

Учитывая следующий код Ruby, и учитывая, что у меня есть экземпляр Klass, как я могу вызвать метод do_stuff в моем экземпляре Klass.Я хочу привести свой экземпляр Klass к Subklass.Я понимаю, что приведение типов это невозможно в Ruby - есть ли способ его подделать?

class Klass
  ...
end

class Subklass < Klass
  ...
  def do_stuff
    ...
  end
end

inst = Klass.new
inst.magically_convert_to_subklass_instance # Need help here
inst.do_stuff

1 Ответ

2 голосов
/ 15 июля 2010

Наследование не работает таким образом.Если у вас есть экземпляр Klass, вы никоим образом не можете разыграть его как Subklass.Чтобы поделиться таким кодом, лучше использовать модуль для определения метода do_stuff, чтобы добавить функции из модуля в Klass.т.е.:

module StuffModule
  def do_stuff
    print "do stuff"
  end
end

class Klass
include StuffModule
end

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