Курс языка программирования 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)

Комментарии

  1. Когда блок .sort возвращает список, Raku сравнивает сперва по первому элементу, затем по второму, — поэтому { .<age>, .<name> } сортирует по возрасту, а имя использует лишь для разрешения ничьих.

  2. У Anna и Cara одинаковый возраст 30, поэтому они упорядочены по алфавиту, а Bob, будучи моложе, идёт первым.

Навигация по курсу

Сортировка по двум ключам   |   Типы и текстовые машины