Курс по Raku / Напреднали / Контейнери / Специални и динамични променливи 🆕 / Exercises / Динамична променлива
Решение: Динамична променлива
Ето едно възможно решение на задачата.
Код
my $*user = 'guest';
sub whoami {
say "running as $*user";
}
whoami();
{
my $*user = 'admin';
whoami();
}🦋 Можете да намерите пълния код във файла a-dynamic-variable.raku.
Резултат
running as guest
running as adminКоментари
Туигилът
*прави$*userдинамична.whoamiникога не я приема като параметър — тя намира стойността, като гледа навън през стека на извикванията, така че първото извикване докладва стойността по подразбиранеguest.Вътрешният блок предекларира
$*userкатоadminза времетраенето на този блок. Същатаwhoamiсега виждаadmin, защото динамичното търсене следва този, който е в момента на стека. Заменянето на динамична променлива в обхват е начинът, по който предоставяте повишен контекст на всичко, извикано от него — без да променятеwhoamiизобщо.
Навигация в курса
← Динамична променлива | Презаписване на динамична променлива →