Курс языка программирования Raku / Продвинутый уровень / Контейнеры / Специальные и динамические переменные / Динамические переменные

Тест — Динамические переменные

Что выведет следующая программа?

my $*n = 1;
sub show { say $*n }

sub run {
    my $*n = 2;
    show();
}

run();
01
12
0Nothing
0An error

show написана на верхнем уровне, рядом с my $*n = 1, но это расположение не имеет значения — динамическая переменная ищется по стеку вызовов, а не по месту расположения кода. Здесь show вызывается из run, которая переобъявила $*n как 2, поэтому именно это значение действует, и программа выводит 2.

Навигация по курсу

Динамические переменные   |   Встроенные специальные переменные