Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Funkcia programado / Generiloj
gather kaj take
Bloko gather kolektas valorojn. Ie ajn ene de ĝi —
inkluzive en bukloj kaj subrutinoj, kiujn ĝi vokas — take
aldonas valoron al la listo, kiun gather produktas:
my @squares = gather {
take $_ ** 2 for 1..3;
}
say @squares; # [1 4 9]La take plenumiĝas unufoje por ĉiu nombro
1, 2, 3, kontribuante 1, 4 kaj
9. La tuta bloko gather rezultigas la liston
de ĉio prenita.
take povas aperi sub ajna fluregado, kio faras
gather ideala por konstrui liston kun kondiĉoj:
my @evens = gather {
for 1..10 {
take $_ if $_ %% 2;
}
}
say @evens; # [2 4 6 8 10]Ĉi tie valoro estas prenata nur kiam la if sukcesas, do
nur la paraj nombroj finiĝas en la listo. Tio ofte estas pli klara ol
konstrui la liston mane per push, ĉar la logiko legiĝas
kiel normala buklo kaj take simple markas la valorojn
konservendajn.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Generiloj | Kvizo — gather kaj take →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.