2015-08-04 4 views
11

В чем разница между вызовом super и call super()? Какой из них лучше, если аргументы, переданные дочернему методу, не соответствуют ожидаемому родительскому элементу.разница между вызовом супер и вызывающим супер()

+0

насчет третьей возможности: 'супер («кошка»,«собака»,«свинья»)'? –

ответ

18

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

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

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

11

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

super - sends all arguments 
super() - no arguments 
+0

Это проще! – kamal

Смежные вопросы