Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Objecten introspecteren / Exercises / Beschrijf een klasse

Oplossing: Beschrijf een klasse

Hier is een mogelijke oplossing voor de taak.

Code

class Animal {
}

class Dog is Animal {
}

say Dog.^name;
say Dog.^mro.elems;
say 'Cat'Dog.^mro.map(*.^name);

🦋 Je kunt de broncode vinden in het bestand describe-a-class.raku.

Uitvoer

Dog
4
False

Opmerkingen

  1. .^name geeft de eigen naam van de klasse terug, Dog.

  2. .^mro geeft de overervingsketen terug, en .elems telt hem. Er zitten vier typen in de keten — Dog, zijn ouder Animal, en de universele Any en Mu — dus het aantal is 4.

  3. .^mro.map(*.^name) zet die keten om in de lijst met typenamen, (Dog Animal Any Mu). De verzamelingsoperator controleert vervolgens of Cat daarbij hoort. Dog stamt niet af van enige Cat, dus het antwoord is False.

Cursusnavigatie

Beschrijf een klasse   |   Tel de attributen