Tri personnalisé avec des fonctions
Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 8 sur 54.
Bien que table.sort() fonctionne très bien pour les listes simples de nombres ou de chaînes, les données du monde réel sont souvent plus complexes. Tu peux avoir une table d’enregistrements de joueurs, d’objets d’inventaire ou de scores de jeu, où chaque entrée est elle-même une table comportant plusieurs champs.
Pour trier ces structures complexes, vous devez indiquer à table.sort() exactement comment comparer deux entrées. C’est là que les fonctions de comparaison personnalisées deviennent essentielles. Une fonction de comparaison prend deux éléments et renvoie true si le premier doit précéder le second dans l’ordre trié.
Voici un exemple avec une table d’enregistrements de joueurs :
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)Après le tri, le tableau des joueurs sera classé par score dans l’ordre décroissant, avec Bob en première position (200), Charlie en deuxième (175) et Alice en troisième (150). La fonction de comparaison accède au champ score de chaque tableau de joueur pour déterminer leur ordre.
Vous pouvez trier selon le champ de votre choix : les noms par ordre alphabétique, les niveaux numériquement, ou même combiner plusieurs critères.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() contre ipairs()Récapitulatif - Fiche de personnage2Fonctions supplémentaires de la bibliothèque table
table.concat()construction de tables et unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des meilleurs scores3Concepts avancés des fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu’est-ce qu’une fermeture ?Récapitulatif - Gestionnaire d’événements simpleEntraînez-vous par vous-même : Compilateur Lua en ligne