Подтвердить что ты не робот

Установить наследование класса после деления класса ИЛИ установить наследование класса класса 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?

4b9b3361

Ответ 1

Невозможно изменить суперкласс уже существующего класса.

Чтобы специфицировать суперкласс класса, который вы создаете динамически, вы просто передаете суперкласс в качестве аргумента для Class.new.

class Parent
end
klass = Class.new(Parent)
klass.superclass #=> Parent

Как примечание стороны: вы не создаете класс с помощью const_set. Вы создаете его с помощью Class.new. Вы просто сохраняете созданный класс в константе с помощью const_set. Когда вызывается const_set, Class.new уже произошло, и суперкласс не может быть изменен больше.