Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Funkcionālā programmēšana / Ģeneratori
gather un take
gather bloks savāc vērtības. Jebkurā vietā tā iekšienē —
arī ciklos un tā izsauktās apakšprogrammās — take pievieno
vērtību sarakstam, ko gather rada:
my @squares = gather {
take $_ ** 2 for 1..3;
}
say @squares; # [1 4 9]take izpildās vienreiz par katru skaitli
1, 2, 3, dodot 1, 4 un
9. Viss gather bloks dod sarakstu ar visu
paņemto.
take var parādīties zem jebkuras vadības plūsmas, un tas
padara gather par ideālu veidu, kā uzbūvēt sarakstu ar
nosacījumiem:
my @evens = gather {
for 1..10 {
take $_ if $_ %% 2;
}
}
say @evens; # [2 4 6 8 10]Šeit vērtība tiek paņemta tikai tad, kad if izdodas,
tāpēc sarakstā nonāk vienīgi pāra skaitļi. Tas bieži vien ir skaidrāk
nekā saraksta būvēšana ar rokām, izmantojot push, jo loģika
lasās kā parasts cikls un take vienkārši atzīmē paturamās
vērtības.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Ģeneratori | Viktorīna — gather un take →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.