Учитывая следующий код 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
Наследование не работает. Если у вас есть экземпляр класса, вы никак не можете преобразовать его в подкласс. Чтобы поделиться таким кодом, вам лучше использовать модуль для определения метода do_stuff для добавления функций из модуля в класс. то есть: [
module StuffModule
def do_stuff
print "do stuff"
end
end
class Klass
include StuffModule
end
inst = Klass.new
inst.do_stuff