Kurso de Raku / Progresinta / Operatoroj / Metaoperatoroj
Reduktaj metaoperatoroj
Redukta meta-operatoro estas skribata kiel ordinara operatoro
ĉirkaŭita de kvadrataj krampoj, ekzemple [+] aŭ
[*]. Ĝi prenas liston da valoroj kaj enmetas la operatoron
inter ĉiun paron, reduktante la tutan liston al unu valoro.
Ekzemple, [+] sumigas ĉiujn elementojn de listo:
my @data = 3, 5, 7, 9, 11;
say [+] @data; # 35La konstruo [+] @data egalas al mane skribi la
operatoron:
say 3 + 5 + 7 + 9 + 11; # 35Ajna taŭga infiksa operatoro funkcias same. Per [*] vi
ricevas la produkton de la listo, do apliki ĝin al la gamo
1..$n estas oportuna maniero kalkuli faktorialon:
my $n = 5;
say [*] 1..$n; # 120Ĉi tie la gamo 1..$n produktas la nombrojn de 1 ĝis 5,
kaj [*] multobligas ilin: 1 * 2 * 3 * 4 * 5,
kio estas 5!.
Ĉenkunigo ankaŭ funkcias. La redukto [~] kunigas liston
da ĉenoj en unu:
my @strings = <neun hundert fünf und zwanzig>;
say [~] @strings; # neunhundertfünfundzwanzigEĉ komparaj operatoroj estas redukteblaj. [<]
raportas ĉu la valoroj estas en strikte kreskanta ordo:
say [<] 1, 2, 3; # TrueTriangula redukto
Se vi metas retrokliniĝon ene de la krampoj, vi ricevas triangulan redukton, kiu konservas ĉiujn intermediajn rezultojn anstataŭ nur la finan:
say [\+] 1..5; # (1 3 6 10 15)Ĉiu elemento de la rezulto estas parta sumo: 1, poste
1+2, poste 1+2+3, kaj tiel plu ĝis la sumo de
la tuta listo.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Metaoperatoroj | Kvizo — Redukto →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.