Cursus Raku / Geavanceerd / Subroutines / Anonieme subroutines / Exercises / Verdrievoudigen
Oplossing: Verdrievoudigen
Hier is een mogelijke oplossing voor de opgave.
Code
my $factor = 3;
my $scale = -> $x { $x * $factor };
say $scale(7);🦋 Je kunt de broncode vinden in het bestand triple-it.raku.
Uitvoer
21Opmerkingen
Het pointy block gebruikt
$factor, een variabele uit het omliggende bereik, hoewel het slechts een parameter$xheeft. Het vastleggen van zulke variabelen is wat het tot een closure maakt.Met
$factorgelijk aan3geeft het aanroepen van$scale(7)het resultaat21. Verander$factoren hetzelfde blok zou met de nieuwe waarde schalen:
$factor = 5;
say $scale(7); # 35Omdat de closure de variabele vastlegt in plaats van de
waarde op het moment dat hij geschreven werd, ziet de latere aanroep de
bijgewerkte $factor en geeft 35 terug.