Курс Raku / Розширені / Підпрограми / Сигнатури / Вправи / Slurpy іменовані аргументи
Розв’язання: Slurpy іменовані аргументи
Ось один із можливих варіантів розв’язання задачі.
Код
sub describe($name, *%opts) {
my $details = %opts.sort.map({ "{.key}={.value}" }).join(', ');
"$name: $details";
}
say describe('Anna', colour => 'red', size => 5);🦋 Вихідний код можна знайти у файлі slurpy-hash.raku.
Вивід
Anna: colour=red, size=5Коментарі
Сталий позиційний параметр
$nameзаповнюється першим, а всеїдний*%optsдалі збирає кожен іменований аргумент, що лишився, у хеш.%opts.sortупорядковує пари за ключем, тож вивід є детермінованим —colourіде передsize..mapперетворює кожну пару на рядокkey=valueза допомогою.keyта.value, а.join(', ')склеює їх разом.Підсумковий рядок інтерполює
$nameі зібраний$details, даючиAnna: colour=red, size=5.