Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Протокол метаобъектов 🆕 / Exercises / Порядок разрешения методов

Решение: Порядок разрешения методов

Вот один из возможных вариантов решения задачи.

Код

class A {
}

class B is A {
}

class C is B {
}

say C.^mro.map(*.^name);

🦋 Исходный код можно найти в файле the-mro.raku.

Вывод

(C B A Any Mu)

Комментарии

  1. .^mro возвращает цепочку типов, которые Raku просматривает при разрешении метода.

  2. Цепочка идёт по линии наследования шаг за шагом: C, затем его родитель B, затем родитель BA, и наконец Any и Mu, которыми заканчивается всякий тип. Более глубокая иерархия просто делает список длиннее.

Навигация по курсу

Порядок разрешения методов   |   Ромб классов