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 →