Курс по 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 тест върху съдържанието на тази тема.

Навигация в курса

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


💪 Или преминете направо към упражненията в този раздел.