Raku-Kurs / Fortgeschritten / Container / Spezielle und dynamische Variablen / Exercises
Eine dynamische Variable
Aufgabe
Eine dynamische Variable — geschrieben mit dem *-Twigil
— wird aufgelöst, indem nach außen durch den Aufrufstapel gesucht wird,
nicht über den lexikalischen Geltungsbereich. Der Wert, den eine
Subroutine sieht, hängt also davon ab, wer sie aufgerufen hat, was es
einem Block ermöglicht, den von ihm aufgerufenen Code unter einer
anderen Identität auszuführen.
- Deklariere eine dynamische Variable
$*usermit dem Wert'guest'. - Schreibe eine Subroutine
whoami, dierunning asgefolgt vom aktuellen$*userausgibt (zum Beispielrunning as guest). Sie muss$*userdirekt lesen — sie nimmt keine Parameter entgegen. - Rufe
whoamieinmal auf der obersten Ebene auf: sie meldetguest. - Dann rufe innerhalb eines Blocks, der
$*userals'admin'neu deklariert, dieselbewhoamierneut auf: sie meldet jetztadmin.
Beispiel
Das Programm gibt aus:
running as guest
running as adminLösung
Kursnavigation
← Quiz — Spezielle Variablen | Lösung: Eine dynamische Variable →