Курс языка программирования Raku / Продвинутый уровень / Подпрограммы / Анонимные подпрограммы / Exercises / Утроить

Решение: Утроить

Вот возможное решение задачи.

Код

my $factor = 3;
my $scale = -> $x { $x * $factor };

say $scale(7);

🦋 Исходный код можно найти в файле triple-it.raku.

Вывод

21

Комментарии

  1. Остроконечный блок использует $factor — переменную из окружающей области видимости, — хотя принимает только параметр $x. Захват таких переменных и делает его замыканием.

  2. При $factor, равном 3, вызов $scale(7) даёт 21. Измените $factor, и тот же блок будет масштабировать на новое значение:

$factor = 5;
say $scale(7); # 35

Поскольку замыкание захватывает саму переменную, а не её значение на момент создания, последующий вызов видит обновлённый $factor и возвращает 35.

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

Утроить   |   Анонимный квадрат