Cursus Raku / Geavanceerd / Containers / Speciale en dynamische variabelen / Exercises / Een dynamische variabele
Oplossing: Een dynamische variabele
Hier is een mogelijke oplossing voor de opgave.
Code
my $*user = 'guest';
sub whoami {
say "running as $*user";
}
whoami();
{
my $*user = 'admin';
whoami();
}🦋 Je kunt de broncode vinden in het bestand a-dynamic-variable.raku.
Uitvoer
running as guest
running as adminOpmerkingen
De
*-twigil maakt$*userdynamisch.whoamineemt het nooit als parameter — het vindt de waarde door naar buiten te zoeken via de call stack, dus de eerste aanroep rapporteert de standaardwaardeguest.Het binnenste blok declareert
$*useropnieuw alsadminvoor de duur van dat blok. Dezelfdewhoamiziet nuadmin, omdat dynamisch opzoeken volgt wie er momenteel op de stack staat. Het overschrijven van een dynamische variabele in een scope is hoe je verhoogde context verleent aan alles wat van daaruit wordt aangeroepen — zonderwhoamizelf te wijzigen.