Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte
Objekte introspizieren
Im Abschnitt über Container
haben Sie .^name verwendet, um einen Wert nach seinem Typ
zu fragen. Dieselben Meta-Aufrufe mit .^ erlauben es Ihnen,
eine Klasse und ihre Objekte zu untersuchen: ihre Namen, ihre Attribute
und ihren Platz in einer Hierarchie.
Die Metamethode .^name liefert den Namen der Klasse:
class Dog {
has Str $.name;
method bark { 'Woof' }
}
say Dog.^name; # DogDie Metamethode .^attributes führt die Attribute der
Klasse auf. Jedes wird mit seinem Typ und seinem internen privaten Namen
dargestellt (die $!-Form, die Sie bei den privaten Attributen
kennengelernt haben):
say Dog.^attributes; # (Str $!name)Introspektion ist nützlich für Werkzeuge, die allgemein mit Objekten arbeiten — etwa um jedes Attribut eines Objekts auszugeben, ohne dessen Klasse vorher zu kennen. Das nächste Thema zeigt, wie man die Vererbungskette einer Klasse sieht.
Ebenfalls in diesem Abschnitt
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Abschnitts.
Übungen
Dieser Abschnitt enthält 2 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.