Corso di Raku / Avanzato / Contenitori / Variabili speciali e dinamiche / Exercises / Una variabile dinamica
Soluzione: Una variabile dinamica
Ecco una possibile soluzione.
Codice
my $*user = 'guest';
sub whoami {
say "running as $*user";
}
whoami();
{
my $*user = 'admin';
whoami();
}🦋 Puoi trovare il codice sorgente nel file a-dynamic-variable.raku.
Output
running as guest
running as adminCommenti
Il twigil
*rende$*userdinamica.whoaminon la riceve mai come parametro — trova il valore cercando verso l’esterno attraverso lo stack delle chiamate, quindi la prima chiamata riporta il valore predefinitoguest.Il blocco interno ridichiara
$*usercomeadminper la durata di quel blocco. La stessawhoamiora vedeadmin, perche’ la ricerca dinamica segue chi si trova attualmente nello stack. Sovrascrivere una variabile dinamica in uno scope e’ il modo in cui si concede un contesto elevato a tutto cio’ che viene chiamato da esso — senza modificare affattowhoami.