Курс языка программирования 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.
Навигация по курсу
← Динамическая переменная | Переопределение динамической переменной →