Cursus Raku / Programmatio functionalis, simultanea, reactiva et retialis / Programmatio functionalis / Reductio
Rutina reduce
Cum operatione propria potius quam uno operatore nominato reducere
vis, utere rutina reduce. Blocum duorum argumentorum
accipit et illum per indicem applicat, effectum currentem porro
ferens:
say (1..5).reduce(* + *); # 15Blocus * + * duas stellas Whatever habet: prima est effectus
adhuc collectus, secunda est elementum sequens. Itaque
reduce ((((1 + 2) + 3) + 4) + 5) computat, id
est 15 — idem quod [+], sed ut blocus
scriptum.
Ut illa duo argumenta in actione videas, da eis nomina et unumquemque
gradum imprime. Blocus cuspidatus ultimam expressionem suam reddit,
itaque $x + $y et est id de quo blocus nuntiat et valor
quem ad reduce reddit:
say (1..5).reduce(
-> $x, $y {
say "$x + $y";
$x + $y;
}
);Hoc imprimit:
1 + 2
3 + 3
6 + 4
10 + 5
15Unaquaeque ex quattuor primis lineis una vocatio bloci est.
$x est effectus adhuc collectus et $y est
elementum sequens ex indice. Prima omnium vocatio duos primos indicis
valores accipit, 1 et 2; unaquaeque vocatio
posterior summam gradus prioris ut $x retro accipit —
3, deinde 6, deinde 10 — cum
numero sequenti ut $y coniunctam. Valor bloci
$x vocationis sequentis fit, et summa finalis,
15, est id quod reduce reddit et
say in ultima linea imprimit.
Quia blocus quidlibet esse potest, reduce generalior
est. Exempli gratia, valorem gradatim aedifica:
say (1..4).reduce(-> $acc, $x { $acc * 10 + $x }); # 1234Unusquisque gradus accumulatorem per decem multiplicat et cifram
sequentem addit, cifras separatas 1, 2, 3, 4 in numerum
1234 vertens.
Sicut ceterae methodi quae blocos accipiunt, reduce bene
legitur forma vocationis cum
colo, quae parentheses circa blocum omittit:
say (1..5).reduce: * + *; # 15Breviter: [op] forma celeris est pro operatore nominato,
et reduce forma flexibilis pro quolibet bloco coniungenti.
Utraque indicem in unum valorem complicat.
Exercitatio
Sequuntur 1 quiz de contentis huius argumenti.
Navigatio cursus
← Quiz — Metaoperator reductionis | Quiz — Reductio →
💪 Vel recta ad exercitationes huius
sectionis i.