Курс 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 тест за змістом цієї теми.

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

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


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