Fonctions anonymes
Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 13 sur 54.
Maintenant que tu comprends que les fonctions peuvent être stockées dans des variables et transmises, il existe une manière encore plus concise de les écrire. Au lieu de toujours donner un nom à une fonction, tu peux la créer directement là où tu en as besoin. On les appelle des fonctions anonymes.
Une fonction anonyme est simplement une fonction sans nom. Vous la définissez à l’aide du mot-clé function, immédiatement suivi de ses paramètres et de son corps :
function(a, b)
return a + b
endCela crée une valeur de fonction qui peut être utilisée immédiatement. Les fonctions anonymes sont particulièrement utiles lorsque vous transmettez des fonctions comme arguments à d’autres fonctions. Vous souvenez-vous de l’exemple de tri personnalisé présenté précédemment ? Voici à quoi il ressemble avec une fonction anonyme :
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)Au lieu de définir une fonction nommée distincte pour la comparaison, la fonction est créée directement comme deuxième argument de table.sort(). Cela rend le code plus compact et conserve la logique de tri exactement là où elle est utilisée.
Défi
FacileÉcrivez une fonction filterByThreshold qui prend numbers et threshold et renvoie une nouvelle table contenant uniquement les nombres supérieurs au seuil.
Utilisez table.insert() avec une approche basée sur une fonction anonyme pour filtrer les nombres. Créez la logique de filtrage directement, sans définir de fonction nommée distincte.
Logique :
- Créez une table de résultats vide
- Parcourez la table de nombres
- Pour chaque nombre, utilisez une fonction anonyme pour vérifier s’il dépasse le seuil
- Si la vérification renvoie true, ajoutez le nombre à la table de résultats
- Renvoyez la table de résultats filtrée
Paramètres :
numbers(table) : Une table de type liste contenant des valeurs numériquesthreshold(number) : La valeur minimale (exclusive) utilisée pour le filtrage
Renvoie : Une table contenant uniquement les nombres supérieurs au seuil (table)
Essayez vous-même
function filterByThreshold(numbers, threshold)
-- Écrivez le code ici
end
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