Курс языка программирования Raku / Продвинутый уровень / Подпрограммы / Сигнатуры / Exercises / Поглощающие именованные аргументы
Решение: Поглощающие именованные аргументы
Вот возможное решение задачи.
Код
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.
Навигация по курсу
← Поглощающие именованные аргументы | Тест — Поглощающие параметры →