Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Функционално програмиране / Функции от по-висок ред
Подаване на подпрограми
За да приемете подпрограма като параметър, декларирайте я със сигила
&. Вътре в тялото после можете да я извикате по
име:
sub apply(&f, $x) {
f($x);
}
say apply(* + 3, 10); # 13Параметърът &f получава парче код, а
f($x) го извиква. Тук подадохме * + 3 — израз
Whatever, който означава „добави три към каквото ти дадат“, —
така че apply(* + 3, 10) изчислява 13.
Също толкова лесно можете да подадете и именувана подпрограма, като
се позовете на нея със сигила &, за да бъде подадена, а
не извикана:
sub double($n) { $n * 2 }
sub apply(&f, $x) {
f($x);
}
say apply(&double, 5); # 10Точно така работят map и grep: те са
подпрограми, които приемат друга подпрограма — вашия блок — и я прилагат
към всеки елемент. Писането на собствени подпрограми, които приемат код,
ги прави също толкова гъвкави.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Функции от по-висок ред | Тест — Подаване на подпрограми →
💪 Или преминете направо към упражненията в този
раздел.