Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Hogere-ordefuncties
Subroutines teruggeven
Een subroutine kan ook een subroutine teruggeven. Zo bouw je gaandeweg nieuwe functies, op maat van de argumenten die je meegeeft:
sub adder($n) {
sub ($x) { $x + $n };
}
my &add5 = adder(5);
say add5(3); # 8adder(5) bouwt en geeft een anonieme subroutine terug
die 5 bij haar argument optelt. We bewaren die in
&add5 en roepen haar aan als elke andere subroutine.
adder(10) aanroepen zou een andere opteller geven die er
tien bij optelt.
Merk op dat de teruggegeven subroutine de waarde van $n
onthoudt uit de aanroep die haar maakte — add5 houdt haar
5 ook nadat adder klaar is. Een subroutine die
waarden vastlegt uit het bereik waar ze gemaakt is, heet een closure, het onderwerp van de
volgende sectie.
Functies teruggeven is een compacte manier om families van verwante
bewerkingen te maken zonder jezelf te herhalen: één definitie van
adder levert een onbeperkt aantal specifieke optellers
op.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — Subroutines doorgeven | Quiz — Hogere-ordefuncties →
💪 Of ga direct naar de oefeningen in deze
sectie.