В Ruby super
- это ключевое слово , а не метод.
Почему он был разработан таким образом?
Дизайн Ruby стремится реализовать как можно больше методов; Ключевые слова обычно зарезервированы для языковых функций, которые имеют свои собственные правила грамматики. Однако super
выглядит и действует как вызов метода.
(Я знаю, что было бы обременительно реализовать super
на чистом Ruby, так как он должен был бы анализировать имя метода из вызывающего
или использовать trace_func . Само по себе это не помешает ему быть методом, потому что многие методы Kernel не реализованы в чистом Ruby.)