Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Objekte introspizieren / Exercises / Beschreiben Sie eine Klasse

Lösung: Beschreiben Sie eine Klasse

Hier ist eine mögliche Lösung der Aufgabe.

Code

class Animal {
}

class Dog is Animal {
}

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

🦋 Du findest den Quellcode in der Datei describe-a-class.raku.

Ausgabe

Dog
4
False

Kommentare

  1. .^name liefert den eigenen Namen der Klasse, Dog.

  2. .^mro liefert die Vererbungskette, und .elems zählt sie. In der Kette stehen vier Typen — Dog, sein Elternteil Animal sowie die universellen Any und Mu —, die Anzahl ist also 4.

  3. .^mro.map(*.^name) verwandelt diese Kette in die Liste der Typnamen, (Dog Animal Any Mu). Der Mengenoperator prüft dann, ob Cat darunter ist. Dog stammt von keiner Cat ab, die Antwort ist also False.

Kursnavigation

Beschreiben Sie eine Klasse   |   Attribute zählen