Фальсифицировать преобразование типа в Ruby?

Учитывая следующий код 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
задан Joel 14 July 2010 в 23:43
поделиться

1 ответ

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

module StuffModule
  def do_stuff
    print "do stuff"
  end
end

class Klass
include StuffModule
end

inst = Klass.new
inst.do_stuff
2
ответ дан 2 September 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: