Установить наследование класса после деления класса ИЛИ установить наследование класса класса const_set
Если класс был ранее определен, как я могу сказать ему наследовать от класса Parent
Например:
class Parent
..
end
class Klass
..
end
Теперь я хочу, чтобы он наследовал от родителя
Я не могу повторно открыть класс и установить его, потому что я получу ошибку несоответствия класса
class Klass < Parent
..
end
В частности, я пытаюсь выяснить, как установить наследование класса для класса im, созданного с помощью Object.const_set
klass = Object.const_set('Klass', Class.new)
Как я могу сказать Klass, чтобы наследовать от класса Parent?
Ответы
Ответ 1
Невозможно изменить суперкласс уже существующего класса.
Чтобы специфицировать суперкласс класса, который вы создаете динамически, вы просто передаете суперкласс в качестве аргумента для Class.new
.
class Parent
end
klass = Class.new(Parent)
klass.superclass #=> Parent
Как примечание стороны: вы не создаете класс с помощью const_set
. Вы создаете его с помощью Class.new
. Вы просто сохраняете созданный класс в константе с помощью const_set
. Когда вызывается const_set
, Class.new
уже произошло, и суперкласс не может быть изменен больше.