Курс Raku / Розширені / Контейнери / Спеціальні та динамічні змінні 🆕 / Динамічні змінні

Тест — Динамічні змінні

Що виведе наведена програма?

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

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

run();
01
12
0Нічого
0Помилку

show написано на верхньому рівні, просто поруч із my $*n = 1, але це розташування не має значення: динамічну змінну шукають через стек викликів, а не за тим, де лежить код. Тут show викликано з run, який перевизначив $*n як 2, тож саме це значення чинне, і програма виводить 2.

Навігація курсом

Динамічні змінні   |   Вбудовані спеціальні змінні