Курс языка программирования Raku / Приложение 🆕 / Порядок выполнения и функции / Подпрограммы и функциональный стиль / Exercises / Сортировка по двум ключам
Решение: Сортировка по двум ключам
Вот один из возможных вариантов решения задачи.
Код
my @people =
{ name => 'Anna', age => 30 },
{ name => 'Bob', age => 25 },
{ name => 'Cara', age => 30 };
for @people.sort({ .<age>, .<name> }) -> %person {
say "%person<name> (%person<age>)";
}🦋 Исходный код можно найти в файле sort-by-two-keys.raku.
Вывод
Bob (25)
Anna (30)
Cara (30)Комментарии
Когда блок
.sortвозвращает список, Raku сравнивает сперва по первому элементу, затем по второму, — поэтому{ .<age>, .<name> }сортирует по возрасту, а имя использует лишь для разрешения ничьих.У Anna и Cara одинаковый возраст
30, поэтому они упорядочены по алфавиту, а Bob, будучи моложе, идёт первым.