Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Функційне програмування / Функції вищого порядку

Повернення підпрограм

Підпрограма може також повертати підпрограму. Це дозволяє будувати нові функції на льоту, припасовані до аргументів, які ви передаєте:

sub adder($n) {
    sub ($x) { $x + $n };
}

my &add5 = adder(5);
say add5(3); # 8

adder(5) будує й повертає анонімну підпрограму, що додає 5 до свого аргументу. Ми зберігаємо її в &add5 і викликаємо, як будь-яку іншу підпрограму. Виклик adder(10) дав би інший додавач, що додає десять.

Зверніть увагу, що повернена підпрограма пам’ятає значення $n із того виклику, що її створив, — add5 зберігає свою 5 навіть після того, як adder завершився. Підпрограму, що захоплює значення з області, у якій її створено, називають замиканням, і це тема наступного розділу.

Повернення функцій — компактний спосіб виробляти сімейства споріднених операцій, не повторюючись: одне визначення adder дає необмежену кількість конкретних додавачів.

Практика

Виконайте 1 тест за змістом цієї теми.

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

Тест — Передавання підпрограм   |   Тест — Функції вищого порядку


💪 Або перейдіть одразу до вправ цього розділу.