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

Разница между вызовом super и call super()

В чем разница между вызовом super и call super()? Что является лучшим, если аргументы, переданные дочернему методу, не соответствуют ожидаемому родительскому объекту.

4b9b3361

Ответ 1

Когда вы вызываете super без аргументов, Ruby отправляет сообщение родительскому объекту текущего объекта, запрашивая его вызывать метод с тем же именем, что и вы вызывали super, а также аргументы, которые были переданному этому методу.

С другой стороны, при вызове с super() он не отправляет аргументы родителям.

Если аргументы, которые у вас есть, не соответствуют ожидаемому родительскому объекту, я бы сказал, что вы бы хотели использовать super() или явно указать параметры в функциональном вызове для соответствия допустимому родительскому конструктору.

Ответ 2

Диктует аргументы, которые отправляются в цепочку предков объекта

super - sends all arguments
super() - no arguments