Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Generatoren
gather en take
Een gather-blok verzamelt waarden. Overal daarbinnen —
ook in lussen en in subroutines die het aanroept — voegt een
take een waarde toe aan de lijst die gather
oplevert:
my @squares = gather {
take $_ ** 2 for 1..3;
}
say @squares; # [1 4 9]De take draait één keer voor elk getal
1, 2, 3 en levert 1, 4 en
9. Het hele gather-blok evalueert naar de
lijst met alles wat opgenomen is.
take mag onder elke besturingsstructuur staan, wat
gather ideaal maakt om met voorwaarden een lijst op te
bouwen:
my @evens = gather {
for 1..10 {
take $_ if $_ %% 2;
}
}
say @evens; # [2 4 6 8 10]Hier wordt een waarde alleen opgenomen wanneer de if
slaagt, dus komen alleen de even getallen in de lijst terecht. Dat is
vaak duidelijker dan de lijst met de hand met push
opbouwen, omdat de logica als een gewone lus leest en take
eenvoudigweg de te bewaren waarden markeert.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Generatoren | Quiz — gather en take →
💪 Of ga direct naar de oefeningen in deze
sectie.