Курс языка программирования Raku / Приложение 🆕 / Порядок выполнения и функции / Подпрограммы и функциональный стиль / Exercises / Описание по типу
Решение: Описание по типу
Вот один из возможных вариантов решения задачи.
Код
multi describe(Int $x) { "integer $x" }
multi describe(Str $x) { "string $x" }
multi describe(@x) { "list of {@x.elems}" }
say describe(42);
say describe('hi');
say describe([1, 2, 3]);🦋 Исходный код можно найти в файле multi-describe.raku.
Вывод
integer 42
string hi
list of 3Комментарии
Каждый
multiзадаёт свою версиюdescribeс параметром другого типа. Raku выбирает подходящего кандидата по типу аргумента.Сигнатура
@xсоответствует списку, поэтому массив попадает в третьего кандидата, который сообщает его длину.