Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Функции высшего порядка / Exercises / Создайте умножитель

Решение: Создайте умножитель

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

Код

sub multiplier($n) {
    sub ($x) { $x * $n };
}

my &double = multiplier(2);
my &triple = multiplier(3);

say double(7);
say triple(7);

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

Вывод

14
21

Комментарии

  1. multiplier(2) возвращает подпрограмму, которая помнит, что $n равно 2; multiplier(3) возвращает отдельную подпрограмму, помнящую 3.

  2. Каждая возвращённая подпрограмма держит собственное $n, поэтому double(7) даёт 14, а triple(7)21: две независимые функции, построенные одной и той же фабрикой.

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

Создайте умножитель   |   Фильтрация блоком