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; # Dog

Die 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.

  1. Beschreiben Sie eine Klasse
  2. Attribute zählen

Kursnavigation

Lösung: Ein tanzender Roboter   |   Die Vererbungskette