Ruby/Методика самопознания: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 55:
 
=== Какие классы/модули использовались этим классом? ===
На первый взгляд может показатьпоказаться странным такой вопрос, так как мы уже знаем метод <tt>superclass</tt>, что дает нам возможность получить достоверную информацию о иерархии родительских классов.
Дело в том, что в языке Ruby отсутствует [[w:Множественное наследование|множественное наследование]], которое компенсируется механизмом [[w:Примесь (программирование)|примесей]]. Вот для того, чтобы получить массив всех классов/модулей, которые относятся к данному классу и существует метод <tt>.ancestors</tt>. Посмотрим его в деле:
 
Строка 63:
 
Обратите внимание, что текущий класс располагается нулевым элементом в массиве, а все остальные классы расположены в порядке наследования/примешивания.
 
=== Как получить список примесей класса? ===
Поработав с методом <tt>.ancestors</tt> может возникнуть резонный вопрос, а что если нужно получить только список примесей без родительских классов? В принципе, для этого надо знать только то, что все примеси имеют класс Module. Узнать это можно, если выполнить простенькую программу: