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 atgriešana
Apakšprogramma var arī atgriezt apakšprogrammu. Tas ļauj uz vietas būvēt jaunas funkcijas, pielāgotas tiem argumentiem, ko dodat:
sub adder($n) {
sub ($x) { $x + $n };
}
my &add5 = adder(5);
say add5(3); # 8adder(5) uzbūvē un atgriež anonīmu apakšprogrammu, kas
savam argumentam pieskaita 5. Mēs to saglabājam
&add5 un izsaucam kā jebkuru citu apakšprogrammu.
Izsaucot adder(10), iegūtu citu saskaitītāju, kas pieskaita
desmit.
Ievērojiet, ka atgrieztā apakšprogramma atceras $n
vērtību no tā izsaukuma, kas to radīja, — add5 patur savu
5 pat pēc tam, kad adder beidzis darbu.
Apakšprogrammu, kas satver vērtības no redzamības apgabala, kurā tā
radīta, sauc par slēgumu —
tas ir nākamās sadaļas priekšmets.
Funkciju atgriešana ir kompakts veids, kā radīt radniecīgu darbību
saimes, neatkārtojoties: viena adder definīcija dod
neierobežotu skaitu konkrētu saskaitītāju.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Viktorīna — Apakšprogrammu nodošana | Viktorīna — Augstākas kārtas funkcijas →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.