Menu
Coddy logo textTech

Fonctions anonymes

Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 13 sur 54.

Maintenant que vous comprenez 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, vous pouvez la créer directement là où vous en avez besoin — on les appelle des fonctions anonymes.

Une fonction anonyme est simplement une fonction sans nom. Vous la définissez en utilisant le mot-clé function suivi immédiatement 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 lors du passage de fonctions en tant qu'arguments à d'autres fonctions. Vous souvenez-vous de l'exemple de tri personnalisé de tout à l'heure ? Voici à quoi cela 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 en tant que second argument de table.sort(). Cela rend le code plus compact et maintient la logique de tri 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 de fonction anonyme pour filtrer les nombres. Créez la logique de filtrage en ligne sans définir de fonction nommée séparée.

Logique :

  • Créer une table de résultat vide
  • Parcourir la table des nombres
  • Pour chaque nombre, utiliser une fonction anonyme pour vérifier s'il dépasse le seuil
  • Si la vérification renvoie vrai, ajouter le nombre à la table de résultat
  • Renvoyer la table de résultat filtrée

Paramètres :

  • numbers (table) : Une table de type liste contenant des valeurs numériques
  • threshold (number) : La valeur minimale (exclusive) pour le filtrage

Renvoie : Une table contenant uniquement les nombres supérieurs au seuil (table)

Aide-mémoire

Une fonction anonyme est une fonction sans nom, définie à l'aide du mot-clé function suivi des paramètres et du corps :

function(a, b)
    return a + b
end

Les fonctions anonymes sont utiles lors du passage de fonctions en tant qu'arguments, permettant de garder la logique en ligne là où elle est utilisée :

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)

Cela crée la fonction de comparaison directement en tant qu'argument de table.sort(), rendant le code plus compact.

Essayez vous-même

function filterByThreshold(numbers, threshold)
    -- Écrire 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 Logic & Flow