Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Функційне програмування / Функції вищого порядку
Повернення підпрограм
Підпрограма може також повертати підпрограму. Це дозволяє будувати нові функції на льоту, припасовані до аргументів, які ви передаєте:
sub adder($n) {
sub ($x) { $x + $n };
}
my &add5 = adder(5);
say add5(3); # 8adder(5) будує й повертає анонімну підпрограму, що додає
5 до свого аргументу. Ми зберігаємо її в
&add5 і викликаємо, як будь-яку іншу підпрограму.
Виклик adder(10) дав би інший додавач, що додає десять.
Зверніть увагу, що повернена підпрограма пам’ятає значення
$n із того виклику, що її створив, — add5
зберігає свою 5 навіть після того, як adder
завершився. Підпрограму, що захоплює значення з області, у якій її
створено, називають замиканням, і це тема
наступного розділу.
Повернення функцій — компактний спосіб виробляти сімейства
споріднених операцій, не повторюючись: одне визначення
adder дає необмежену кількість конкретних додавачів.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Тест — Передавання підпрограм | Тест — Функції вищого порядку →
💪 Або перейдіть одразу до вправ цього
розділу.