Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Funkcionālā programmēšana / Augstākas kārtas funkcijas

Apakšprogrammu nodošana

Lai pieņemtu apakšprogrammu kā parametru, deklarējiet to ar sigilu &. Ķermeņa iekšienē to pēc tam var izsaukt pēc nosaukuma:

sub apply(&f, $x) {
    f($x);
}

say apply(* + 3, 10); # 13

Parametrs &f saņem koda gabalu, un f($x) to izsauc. Šeit padevām * + 3Whatever izteiksmi, kas nozīmē «pieskaiti trīs tam, ko tev iedod», — tāpēc apply(* + 3, 10) aprēķina 13.

Tikpat viegli var padot nosauktu apakšprogrammu, atsaucoties uz to ar sigilu &, lai tā tiktu padota, nevis izsaukta:

sub double($n) { $n * 2 }

sub apply(&f, $x) {
    f($x);
}

say apply(&double, 5); # 10

Tieši tā darbojas map un grep: tās ir apakšprogrammas, kas ņem citu apakšprogrammu — jūsu bloku — un piemēro to katram elementam. Rakstot savas apakšprogrammas, kas ņem kodu, tās kļūst tikpat elastīgas.

Prakse

Jūs gaida 1 viktorīna par šī temata saturu.

Kursa navigācija

Augstākas kārtas funkcijas   |   Viktorīna — Apakšprogrammu nodošana


💪 Vai arī dodieties tieši uz šīs sadaļas vingrinājumiem.