Kurso de Raku / Progresinta / Ujoj / Specialaj kaj dinamikaj variabloj / Exercises / Dinamika variablo

Solvo: Dinamika variablo

Jen ebla solvo de la tasko.

Kodo

my $*user = 'guest';

sub whoami {
    say "running as $*user";
}

whoami();

{
    my $*user = 'admin';
    whoami();
}

🦋 Vi povas trovi la fontkodon en la dosiero a-dynamic-variable.raku.

Eligo

running as guest
running as admin

Komentoj

  1. La tvigilo * faras $*user dinamika. whoami neniam prenas ĝin kiel parametron — ĝi trovas la valoron per rigardado eksteren tra la voka stako, do la unua voko raportas la defaŭltan guest.

  2. La interna bloko redeklaras $*user kiel admin dum la daŭro de tiu bloko. La sama whoami nun vidas admin, ĉar dinamika serĉado sekvas tiun, kiu nuntempe estas sur la stako. Anstataŭigi dinamikan variablon en amplekso estas kiel vi donas pliigitan kuntekston al ĉio, kio estas vokita el ĝi — sen ŝanĝi whoami entute.

Kursa navigado

Dinamika variablo   |   Superregi la dinamikan