Курс языка программирования 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)Комментарии
.^mroвозвращает цепочку типов, которые Raku просматривает при разрешении метода.Цепочка идёт по линии наследования шаг за шагом:
C, затем его родительB, затем родительB—A, и наконецAnyиMu, которыми заканчивается всякий тип. Более глубокая иерархия просто делает список длиннее.