Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten

Objecten introspecteren

In de sectie over containers gebruikte je .^name om een waarde naar haar type te vragen. Dezelfde meta-aanroepen met .^ laten je een klasse en haar objecten inspecteren: hun namen, hun attributen, en waar ze in een hiërarchie zitten.

De metamethode .^name geeft de naam van de klasse terug:

class Dog {
    has Str $.name;
    method bark { 'Woof' }
}

say Dog.^name; # Dog

De metamethode .^attributes somt de attributen van de klasse op. Elk wordt getoond met zijn type en zijn interne private naam (de $!-vorm die je bij private attributen tegenkwam):

say Dog.^attributes; # (Str $!name)

Introspectie is nuttig voor tools die generiek met objecten werken — bijvoorbeeld om elk attribuut van een object af te drukken zonder de klasse van tevoren te kennen. Het volgende onderwerp bekijkt hoe je de overervingsketen van een klasse kunt zien.

Ook in deze sectie

Praktijk

Maak de 1 quiz over de inhoud van deze sectie.

Oefeningen

Deze sectie bevat 2 oefeningen. Bekijk alle onderwerpen van deze sectie voordat je aan de oefeningen begint.

  1. Beschrijf een klasse
  2. Tel de attributen

Cursusnavigatie

Oplossing: Een dansende robot   |   De overervingsketen