Raku kurss / Padziļināti / Vairāk par iebūvētajiem tipiem / Kopas, somas un maisījumi

Somas un maisījumi

Kopa atceras tikai to, vai vērtība ir klāt. Reizēm vēlaties zināt arī, cik reižu tā sastopama. Tieši tam domāts Bag: tas katrai vērtībai uztur skaitu.

Maisu izveido ar rutīnu bag. Atkārtotas vērtības netiek sapludinātas — tās tiek saskaitītas:

my $b = bag(<a b a c a>);
say $b<a>; # 3
say $b<b>; # 1

Prasot maisam vērtību ar indeksu < >, tiek atgriezts, cik reižu šī vērtība tajā ielikta. Metode total dod visu skaitu summu:

say bag(<a b a c a>).total; # 5

Mix ir tā pati doma, kas maiss, tikai skaiti (saukti par svariem) drīkst būt daļskaitļi, nevis veseli skaitļi. Lai piešķirtu skaidri norādītus svarus, savienojiet katru vērtību ar tās svaru un pārveidojiet sarakstu ar .Mix:

my $m = (flour => 2.5, sugar => 0.75).Mix;
say $m<flour>; # 2.5
say $m.total;  # 3.25

Svara meklēšana ar < > un to summēšana ar total darbojas tieši tāpat kā maisam — tikai skaitļiem nav jābūt veseliem. Šeit total saskaita svarus 2.5 un 0.75, dodot 3.25 — tā ir svaru summa, nevis vērtību skaits. Maisi un maisījumi ir noderīgi ikreiz, kad jāseko līdzi daudzumiem — piemēram, skaitot, cik bieži tekstā parādās katrs vārds, vai piešķirot svarus izvēles variantiem.

Kursa navigācija

Viktorīna — Kopas   |   Saskaitīt unikālos


💪 Vai arī dodieties tieši uz šīs sadaļas vingrinājumiem.