Курс по Raku / Напреднали / Подпрограми / Сигнатури / Exercises / 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се попълва първи, а slurpy*%optsслед това събира всеки останал именуван аргумент в хеш.%opts.sortподрежда двойките по ключ, така че резултатът е детерминистичен —colourидва предиsize..mapпревръща всяка двойка в низkey=valueс.keyи.value, а.join(', ')ги слепва заедно.Крайният низ интерполира
$nameи сглобения$details, произвеждайкиAnna: colour=red, size=5.