Kurso de Raku / Progresinta / Subprogramoj / Subskriboj / Exercises / Englutaj nomitaj argumentoj

Solvo: Englutaj nomitaj argumentoj

Jen ebla solvo de la tasko.

Kodo

sub describe($name, *%opts) {
    my $details = %opts.sort.map({ "{.key}={.value}" }).join(', ');
    "$name: $details";
}

say describe('Anna', colour => 'red', size => 5);

🦋 Vi povas trovi la fontkodon en la dosiero slurpy-hash.raku.

Eligo

Anna: colour=red, size=5

Komentoj

  1. La fiksita pozicia parametro $name estas plenigita unue, kaj la engluta *%opts poste kolektas ĉiun restantan nomitan argumenton en hakon.

  2. %opts.sort ordigas la parojn laŭ ŝlosilo, do la eligo estas determinita — colour venas antaŭ size. La .map transformas ĉiun paron en ĉenon key=value per .key kaj .value, kaj .join(', ') gluas ilin kune.

  3. La fina ĉeno interpolas $name kaj la kunmetitan $details, produktante Anna: colour=red, size=5.

Kursa navigado

Englutaj nomitaj argumentoj   |   Kvizo — Englutaj parametroj