Menu
Coddy logo textTech

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
end

Cela 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.

challenge icon

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ériques
  • threshold (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
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur Lua en ligne