Cursus Raku / Geavanceerd / Containers / Containers introspecteren
WHAT gebruiken
WHAT is een pseudo-methode die toegang geeft tot het
type van een waarde. Je kunt het op vrijwel dezelfde manier gebruiken
als .^name:
my $var = 42;
say $var.^name;
say $var.WHAT;De twee drukken het type af met een klein verschil in weergave:
.^name geeft de kale naam, terwijl WHAT het
type object toont, geschreven tussen haakjes:
Int
(Int)Voor een variabele zonder typebeperking begint het type als
Any. Zodra je een waarde toewijst, volgen zowel
^name als WHAT het type van de opgeslagen
waarde:
my $var;
say $var.^name; # Any
say $var.WHAT; # (Any)
$var = 'Hello';
say $var.^name; # Str
say $var.WHAT; # (Str)Met een typebeperking is het type direct bekend, zelfs voordat er iets is toegewezen:
my Str $var;
say $var.^name; # Str
say $var.WHAT; # (Str)
$var = 'Hello';
say $var.^name; # Str
say $var.WHAT; # (Str)Type objects vergelijken
Omdat WHAT het type object zelf teruggeeft, kun je er
twee vergelijken met de waarde-identiteit-operator
===, die vraagt of beide kanten exact dezelfde waarde zijn.
Er is altijd maar één type object per type, dus dit is een nette manier
om te testen of twee waarden hetzelfde type delen:
my $a = 42;
my $b = 100;
say $a.WHAT === $b.WHAT; # True — both are Int
say $a.WHAT === Int; # True
say $a.WHAT === Str; # FalseAnders dan ==, dat getallen vergelijkt, vergelijkt
=== identiteit, dus het werkt direct voor type objects (en
andere waarden).
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Containers introspecteren
| Quiz —
WHAT en ^name →
💪 Of ga direct naar de oefeningen in deze
sectie.