Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Lambda’s en closures
Lambda’s
Een lambda is een functie zonder naam. Je bent al twee
manieren tegengekomen om er een te schrijven. De eerste is het
pointy
block, dat zijn parameters achter de pijl
-> opsomt:
my &square = -> $x { $x * $x };
say square(7); # 49De tweede is de Whatever-vorm, waarin een
* voor het argument staat en de uitdrukking eromheen een
functie met één argument wordt:
my &square = * ** 2;
say square(7); # 49Beide maken hetzelfde soort ding: een stuk code dat je kunt bewaren, doorgeven en aanroepen. Lambda’s komen het best tot hun recht als argumenten voor hogere-ordefuncties, waar ze een naam geven alleen maar in de weg zou zitten:
say (1..5).map(-> $n { $n * $n }); # (1 4 9 16 25)
say (1..5).map(* ** 2); # (1 4 9 16 25)De pointy vorm is duidelijker wanneer de body langer is of meerdere parameters heeft; de Whatever-vorm is heerlijk kort voor eenvoudige uitdrukkingen. Het zijn twee schrijfwijzen van hetzelfde idee: een functie zonder naam.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Lambda’s en closures | Quiz — Lambda’s →
💪 Of ga direct naar de oefeningen in deze
sectie.