Cursus Raku / Geavanceerd / Containers / Containers introspecteren

VAR gebruiken

VAR is een pseudo-methode die het onderliggende containerobject teruggeeft. Voor een scalar variabele geeft de .VAR-aanroep de Scalar-container erachter terug.

^name

Zodra je de container hebt, kun je de naam van zijn klasse opvragen met .^name:

my $var1 = 42;
my $var2 = '42';

say $var1.^name;     # Int
say $var1.VAR.^name; # Scalar

say $var2.^name;     # Str
say $var2.VAR.^name; # Scalar

.^name op de variabele geeft het type van de waarde terug (Int of Str), terwijl .VAR.^name het type van de container teruggeeft, dat in beide gevallen Scalar is.

default

De default-methode geeft de standaardwaarde van de container terug — wat je krijgt wanneer de container niets van zichzelf bevat. Met de is default-trait stel je dit expliciet in:

my Str $language is default('Raku');
say $language.VAR.default; # Raku

Zonder een expliciete standaardwaarde is de standaardwaarde het type van de container. Voor een container zonder typebeperking is dat Any, ongeacht welke waarde hij momenteel bevat:

my $language = 'Raku';
say $language.VAR.default; # (Any)

Voor een container met typebeperking is het het beperkingstype:

my Str $language;
say $language.VAR.default; # (Str)

name

De name-methode geeft de naam van de container terug, inclusief de sigil:

my $language;
say $language.VAR.name; # $language

Pas op dat je ^name (het type) en name (de eigen naam van de variabele) niet verwart.

Cursusnavigatie

Quiz — WHAT en ^name   |   WHO en HOW


💪 Of ga direct naar de oefeningen in deze sectie.