Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Funkcionālā programmēšana / Datu plūsmas
Plūsmu ķēdēšana
Plūsmu īstā vērtība atklājas, kad posmu ir vairāki. Katrs
==> savu rezultātu padod nākamajai darbībai, tāpēc viss
konveijers lasās no augšas uz leju tādā secībā, kādā darbs notiek:
(1..10)
==> grep(* %% 2)
==> map(* ** 2)
==> my @result;
say @result; # [4 16 36 64 100]Sekojiet datiem lejup pa lappusi: sāc ar 1..10, paturi
pāra skaitļus, katru no tiem kāpini kvadrātā un savāc rezultātu. Pāra
skaitļi ir 2, 4, 6, 8, 10, un to kvadrāti ir
4, 16, 36, 64, 100.
Uzrakstīts kā metožu ķēde, tas pats konveijers ir
(1..10).grep(* %% 2).map(* ** 2) — un tas lasās no kreisās
uz labo tāpat kā plūsma. Metožu ķēde nav no iekšpuses uz āru; tā savus
posmus izpilda tieši tādā pašā secībā. Forma, kas tiešām lasās no
iekšpuses uz āru, ir darbību ligzdošana kā parastas funkcijas —
map(* ** 2, grep(* %% 2, 1..10)) —, kur jāsāk ar dziļāko
izsaukumu un jāstrādā uz āru.
Plūsma tātad nav veids, kā izbēgt no koda «no iekšpuses uz āru» — tas
ir vēl viens veids, kā uzrakstīt konveijeru no kreisās uz labo. Ko tā
pievieno, ir izkārtojums: katrs ==> posms var atrasties
savā rindā, un viens un tas pats operators vienādi strādā gan metožu,
gan funkciju stila soļiem, un tas garu konveijeru saglabā viegli
pārskatāmu. Plūsmas un metožu ķēdes galu galā dara vienu un to pašu
darbu; izvēlieties to, kas konkrēto pārveidojumu padara skaidrāku.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Viktorīna — Plūsmas operators | Viktorīna — Plūsmas →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.