Курс Raku / Об’єкти, введення-виведення та винятки / Класи та об’єкти / Інтроспекція об’єктів / Вправи / Опишіть клас
Розв’язання: Опишіть клас
Ось один із можливих варіантів розв’язання задачі.
Код
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.