Kurso de Raku / Progresinta / Pli pri la enkonstruitaj tipoj / Aroj, sakoj kaj miksaĵoj
Sakoj kaj miksaĵoj
Aro memoras nur ĉu valoro ĉeestas. Foje vi ankaŭ volas scii,
kiom da fojoj ĝi okazas. Por tio servas Bag: ĝi
tenas kalkulon por ĉiu valoro.
Vi kreas sakon per la rutino bag. Ripetitaj valoroj ne
kunfandiĝas — ili estas kalkulataj:
my $b = bag(<a b a c a>);
say $b<a>; # 3
say $b<b>; # 1Peti al la sako valoron per la subskribo < >
redonas, kiom da fojoj tiu valoro estis enmetita. La metodo
total donas la sumon de ĉiuj kalkuloj:
say bag(<a b a c a>).total; # 5Mix estas la sama ideo kiel sako, krom ke la kalkuloj
(nomataj pezoj) povas esti frakciaj anstataŭ entjeraj. Por
atribui eksplicitajn pezojn, parigu ĉiun valoron kun ĝia pezo kaj devigu
la liston per .Mix:
my $m = (flour => 2.5, sugar => 0.75).Mix;
say $m<flour>; # 2.5
say $m.total; # 3.25Serĉi pezon per < > kaj sumigi ilin per
total funkcias ĝuste kiel por sako — nur la nombroj ne
devas esti entjeraj. Ĉi tie total aldonas la pezojn
2.5 kaj 0.75, donante 3.25 — ĝi
estas la sumo de la pezoj, ne kalkulo de la valoroj. Sakoj kaj miksaĵoj
estas oportunaj ĉiam kiam vi bezonas sekvi kvantojn — ekzemple, kalkuli
kiom ofte ĉiu vorto aperas en teksto, aŭ atribui pezojn al opcioj.
Kursa navigado
← Kvizo — Aroj | Kalkuli la unikajn →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.