Как Ruby решает, какой метод вызывать?

Ruby связывает методы динамически. Сперва метод ищется среди синглтон методов объекта, затем& - среди методов, определенных в классе объекта, и наконец - в суперклассах и включенных модулях. Порядок поиска можно увидеть с помощью метода Classname.ancestors, который показывает суперклассы и методы класса ClassName.

Если после этого метод найден не был, Ruby пытается вызвать метод method_missing, повторяя для его поиска ту же процедуру. Это позволяет обрабатывать сообщения в виде неизвестных методов, и часто используется для создания динамических интерфейсов классов.

Вход для пользователей