Курс 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 тест за змістом цієї теми.
Навігація курсом
← Функції вищого порядку | Тест — Передавання підпрограм →
💪 Або перейдіть одразу до вправ цього
розділу.