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=5

Kommentare

  1. Der feste positionale Parameter $name wird zuerst gefüllt, und der Slurpy-Parameter *%opts sammelt dann jedes verbleibende benannte Argument in einem Hash.

  2. %opts.sort ordnet die Paare nach Schlüssel, sodass die Ausgabe deterministisch ist — colour kommt vor size. Das .map wandelt jedes Paar mit .key und .value in einen key=value-String um, und .join(', ') fügt sie zusammen.

  3. Der abschließende String interpoliert $name und das zusammengesetzte $details und erzeugt Anna: colour=red, size=5.

Kursnavigation

Slurpy benannte Argumente   |   Quiz — Slurpy-Parameter