Menu
Coddy logo textTech

Les fonctions comme valeurs de première classe

Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 12 sur 54.

En Lua, les fonctions sont plus que de simples blocs de code qui effectuent des tâches. Ce sont des valeurs qui peuvent être traitées comme n’importe quel autre type de données. Cela signifie que tu peux travailler avec les fonctions de la même manière qu’avec des nombres, des chaînes ou des tables.

Vous pouvez stocker une fonction dans une variable :

local greet = function()
    print("Hello!")
end

greet()  -- Sortie : Hello!

Ici, la fonction est assignée à la variable greet, et tu peux l’appeler comme n’importe quelle fonction ordinaire. Cela ouvre de puissantes possibilités quant à la manière dont tu structures ton code.

Les fonctions peuvent également être transmises comme arguments à d’autres fonctions. Cela est particulièrement utile lorsque vous souhaitez qu’une fonction utilise le comportement défini dans une autre :

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Sortie : Hello from a function!

Dans cet exemple, executeAction reçoit une fonction comme paramètre et l’appelle. La fonction sayHello est passée exactement comme vous passeriez un nombre ou une chaîne.

Les fonctions peuvent même renvoyer d’autres fonctions. Cela vous permet de créer des fonctions dynamiquement en fonction de certaines conditions ou de certains paramètres :

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Sortie : 10
challenge icon

Défi

Facile

Écrivez une fonction applyOperation qui prend a, b et operation, puis renvoie le résultat de l’application de la fonction d’opération aux deux nombres.

Le paramètre operation est une table contenant une fonction qui sera appelée avec a et b comme arguments.

Logique :

  • Extraire la fonction de la table operation à l’aide de la clé "func"
  • Appeler cette fonction avec a et b comme arguments
  • Renvoyer le résultat

Paramètres :

  • a (number) : Premier nombre
  • b (number) : Deuxième nombre
  • operation (table) : Une table contenant une fonction stockée à la clé "func"

Renvoie : Le résultat de l’appel de la fonction d’opération avec a et b (number)

Essayez vous-même

function applyOperation(a, b, operation)
    -- É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