Raku kurss / Padziļināti / Operatori / Metaoperatori
Reducēšanas metaoperatori
Redukcijas metaoperators tiek rakstīts kā parasts operators,
ievietots kvadrātiekavās, piemēram, [+] vai
[*]. Tas paņem vērtību sarakstu un ievieto operatoru starp
katru vērtību pāri, reducējot visu sarakstu līdz vienai vērtībai.
Piemēram, [+] saskaita visus saraksta elementus:
my @data = 3, 5, 7, 9, 11;
say [+] @data; # 35Konstrukcija [+] @data ir ekvivalenta operatora
pierakstam pilnā formā:
say 3 + 5 + 7 + 9 + 11; # 35Jebkurš piemērots infiksa operators darbojas tāpat. Ar
[*] jūs iegūstat saraksta reizinājumu, tāpēc, piemērojot to
diapazonam 1..$n, var ērti aprēķināt faktoriālu:
my $n = 5;
say [*] 1..$n; # 120Šeit diapazons 1..$n ģenerē skaitļus no 1 līdz 5, un
[*] tos sareizina: 1 * 2 * 3 * 4 * 5, kas ir
5!.
Darbojas arī virkņu konkatenācija. Redukcija [~] savieno
virkņu sarakstu vienā virknē:
my @strings = <neun hundert fünf und zwanzig>;
say [~] @strings; # neunhundertfünfundzwanzigArī salīdzināšanas operatorus var reducēt. [<]
pārbauda, vai vērtības ir stingri augošā secībā:
say [<] 1, 2, 3; # TrueTrīsstūra redukcija
Ja iekavās ieliek atpakaļsvītru, iegūst trīsstūra redukciju, kas saglabā visus starprezultātus, nevis tikai gala rezultātu:
say [\+] 1..5; # (1 3 6 10 15)Katrs rezultāta elements ir daļēja summa: 1, tad
1+2, tad 1+2+3 un tā tālāk līdz visa saraksta
summai.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Metaoperatori | Viktorīna — Reducēšana →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.