Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Интроспекция объектов / Exercises / Опишите класс
Решение: Опишите класс
Вот один из возможных вариантов решения задачи.
Код
class Animal {
}
class Dog is Animal {
}
say Dog.^name;
say Dog.^mro.elems;
say 'Cat' ∈ Dog.^mro.map(*.^name);🦋 Исходный код можно найти в файле describe-a-class.raku.
Вывод
Dog
4
FalseКомментарии
.^nameвозвращает собственное имя класса —Dog..^mroвозвращает цепочку наследования, а.elemsеё пересчитывает. В цепочке четыре типа —Dog, его родительAnimal, а также универсальныеAnyиMu, — поэтому получается4..^mro.map(*.^name)превращает эту цепочку в список имён типов,(Dog Animal Any Mu). Оператор принадлежности множеству∈затем проверяет, есть ли среди нихCat.Dogне происходит ни от какогоCat, поэтому ответ —False.