Курс по 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 тест върху съдържанието на тази тема.
Навигация в курса
← Тест — Подаване на подпрограми | Тест — Функции от по-висок ред →
💪 Или преминете направо към упражненията в този
раздел.