Cursus Raku / Geavanceerd / Subroutines / Signaturen / Exercises / Slurpy benoemde argumenten
Oplossing: Slurpy benoemde argumenten
Hier is een mogelijke oplossing voor de opgave.
Code
sub describe($name, *%opts) {
my $details = %opts.sort.map({ "{.key}={.value}" }).join(', ');
"$name: $details";
}
say describe('Anna', colour => 'red', size => 5);🦋 De broncode is te vinden in het bestand slurpy-hash.raku.
Uitvoer
Anna: colour=red, size=5Opmerkingen
De vaste positionele parameter
$namewordt eerst ingevuld, en de slurpy*%optsverzamelt vervolgens alle overige benoemde argumenten in een hash.%opts.sortsorteert de paren op sleutel, zodat de uitvoer deterministisch is —colourkomt voorsize. De.mapzet elk paar om in eensleutel=waarde-string met.keyen.value, en.join(', ')voegt ze samen.De uiteindelijke string interpoleert
$nameen het samengestelde$details, watAnna: colour=red, size=5oplevert.