Raku-Kurs / Fortgeschritten / Subroutinen / Signaturen / Exercises / Slurpy benannte Argumente
Lösung: Slurpy benannte Argumente
Hier ist eine mögliche Lösung der Aufgabe.
Code
sub describe($name, *%opts) {
my $details = %opts.sort.map({ "{.key}={.value}" }).join(', ');
"$name: $details";
}
say describe('Anna', colour => 'red', size => 5);🦋 Den Quellcode finden Sie in der Datei slurpy-hash.raku.
Ausgabe
Anna: colour=red, size=5Kommentare
Der feste positionale Parameter
$namewird zuerst gefüllt, und der Slurpy-Parameter*%optssammelt dann jedes verbleibende benannte Argument in einem Hash.%opts.sortordnet die Paare nach Schlüssel, sodass die Ausgabe deterministisch ist —colourkommt vorsize. Das.mapwandelt jedes Paar mit.keyund.valuein einenkey=value-String um, und.join(', ')fügt sie zusammen.Der abschließende String interpoliert
$nameund das zusammengesetzte$detailsund erzeugtAnna: colour=red, size=5.