В чем разница между вызовом super и call super()? Что является лучшим, если аргументы, переданные дочернему методу, не соответствуют ожидаемому родительскому объекту.
Разница между вызовом super и call super()
Ответ 1
Когда вы вызываете super
без аргументов, Ruby отправляет сообщение родительскому объекту текущего объекта, запрашивая его вызывать метод с тем же именем, что и вы вызывали super
, а также аргументы, которые были переданному этому методу.
С другой стороны, при вызове с super()
он не отправляет аргументы родителям.
Если аргументы, которые у вас есть, не соответствуют ожидаемому родительскому объекту, я бы сказал, что вы бы хотели использовать super()
или явно указать параметры в функциональном вызове для соответствия допустимому родительскому конструктору.
Ответ 2
Диктует аргументы, которые отправляются в цепочку предков объекта
super - sends all arguments
super() - no arguments