Menu
Coddy logo textTech

Пользовательская сортировка с помощью функций

Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 8 из 54.

Хотя table.sort() отлично работает с простыми списками чисел или строк, реальные данные часто бывают сложнее. У вас может быть таблица записей игроков, элементов инвентаря или игровых результатов, где каждая запись сама является таблицей с несколькими полями.

Чтобы отсортировать эти сложные структуры, нужно точно указать table.sort(), как сравнивать две записи. Здесь особенно важны пользовательские функции сравнения. Функция сравнения принимает два элемента и возвращает true, если первый должен находиться перед вторым в отсортированном порядке.

Вот пример с таблицей записей игроков:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

После сортировки таблица players будет упорядочена по score в порядке убывания: сначала Bob (200), затем Charlie (175), а Alice — третьей (150). Функция сравнения обращается к полю score каждой таблицы players, чтобы определить их порядок.

Вы можете сортировать по любому нужному полю: имена — в алфавитном порядке, уровни — численно или даже сочетать несколько критериев.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Lua