Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Funkcia programado / Altordaj funkcioj

Redoni subprogramojn

Subprogramo ankaŭ povas redoni subprogramon. Tio permesas al vi konstrui novajn funkciojn tuj, agorditajn al la argumentoj, kiujn vi donas:

sub adder($n) {
    sub ($x) { $x + $n };
}

my &add5 = adder(5);
say add5(3); # 8

adder(5) konstruas kaj redonas anoniman subprogramon, kiu aldonas 5 al sia argumento. Ni konservas ĝin en &add5 kaj vokas ĝin kiel ĉiun alian subprogramon. Voki adder(10) donus malsaman aldonilon, kiu aldonas dek.

Rimarku, ke la redonita subprogramo memoras la valoron de $n el la voko, kiu kreis ĝin — add5 konservas sian 5 eĉ post kiam adder finiĝis. Subprogramo, kiu kaptas valorojn el la amplekso, kie ĝi estis kreita, nomiĝas fermaĵo, la temo de la sekva sekcio.

Redoni funkciojn estas kompakta maniero produkti familiojn de rilataj operacioj sen ripeti sin: unu difino de adder donas senliman nombron da specifaj aldoniloj.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Kvizo — Transdoni subprogramojn   |   Kvizo — Altordaj funkcioj


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.