Raku-Kurs / Fortgeschritten / Container / Spezielle und dynamische Variablen / Exercises / Eine dynamische Variable
Lösung: Eine dynamische Variable
Hier ist eine mögliche Lösung der Aufgabe.
Code
my $*user = 'guest';
sub whoami {
say "running as $*user";
}
whoami();
{
my $*user = 'admin';
whoami();
}🦋 Du findest den Quellcode in der Datei a-dynamic-variable.raku.
Ausgabe
running as guest
running as adminKommentare
Das
*-Twigil macht$*userdynamisch.whoaminimmt es nie als Parameter entgegen — es findet den Wert, indem es nach außen durch den Aufrufstapel schaut. Der erste Aufruf meldet daher den Standardwertguest.Der innere Block deklariert
$*useralsadminfür die Dauer dieses Blocks neu. Dieselbewhoami-Funktion sieht jetztadmin, weil die dynamische Auflösung demjenigen folgt, der sich gerade auf dem Stapel befindet. Das Überschreiben einer dynamischen Variablen in einem Geltungsbereich ist die Art, wie du allem, was von dort aufgerufen wird, einen erweiterten Kontext gibst — ohnewhoamiselbst zu ändern.
Kursnavigation
← Eine dynamische Variable | Die dynamische Variable überschreiben →