Курс по 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: две независими функции, изградени от една и съща фабрика.

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

Създайте умножител   |   Филтриране с блок