Курс языка программирования 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Комментарии
multiplier(2)возвращает подпрограмму, которая помнит, что$nравно2;multiplier(3)возвращает отдельную подпрограмму, помнящую3.Каждая возвращённая подпрограмма держит собственное
$n, поэтомуdouble(7)даёт14, аtriple(7)—21: две независимые функции, построенные одной и той же фабрикой.