Curso de Raku / Avanzado / Contenedores / Variables especiales y dinámicas / Exercises / Una variable dinámica
Solución: Una variable dinámica
Aquí tienes una posible solución a la tarea.
Código
my $*user = 'guest';
sub whoami {
say "running as $*user";
}
whoami();
{
my $*user = 'admin';
whoami();
}🦋 Puedes encontrar el código fuente en el archivo a-dynamic-variable.raku.
Salida
running as guest
running as adminComentarios
El twigil
*hace que$*usersea dinámica.whoaminunca la recibe como parámetro — encuentra el valor buscando hacia afuera a través de la pila de llamadas, así que la primera llamada reporta el valor predeterminadoguest.El bloque interno redeclara
$*usercomoadmindurante la duración de ese bloque. La mismawhoamiahora veadmin, porque la búsqueda dinámica sigue a quien está actualmente en la pila. Sobreescribir una variable dinámica en un ámbito es la forma de otorgar contexto elevado a todo lo que se llame desde él — sin modificarwhoamien absoluto.