Ordenação personalizada com funções
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy — lição 8 de 54.
Embora o table.sort() funcione muito bem para listas simples de números ou strings, os dados do mundo real costumam ser mais complexos. Você pode ter uma tabela de registros de jogadores, itens de inventário ou pontuações de jogos onde cada entrada é, por si só, uma tabela com múltiplos campos.
Para ordenar essas estruturas complexas, você precisa dizer ao table.sort() exatamente como comparar duas entradas. É aqui que as funções de comparação personalizadas se tornam essenciais. Uma função de comparação recebe dois elementos e retorna true se o primeiro deve vir antes do segundo na ordem de classificação.
Aqui está um exemplo com uma tabela de registros de jogadores:
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)Após a ordenação, a tabela players será ordenada por score em ordem decrescente, com Bob em primeiro (200), Charlie em segundo (175) e Alice em terceiro (150). A função de comparação acessa o campo score de cada tabela de jogador para determinar sua ordem.
Você pode ordenar por qualquer campo que desejar — nomes em ordem alfabética, níveis numericamente ou até mesmo combinar múltiplos critérios.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Iteração Avançada de Tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de Personagem2Mais Funções da Biblioteca Table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRecapitulação - Placar de recordes