Les fonctions comme valeurs de première classe
Fait partie de la section Logic & Flow 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 vous pouvez travailler avec des fonctions de la même manière que vous travaillez avec des nombres, des chaînes de caractères ou des tables.
Vous pouvez stocker une fonction dans une variable :
local greet = function()
print("Hello!")
end
greet() -- Résultat : Hello!Ici, la fonction est assignée à la variable greet, et vous pouvez l'appeler tout comme n'importe quelle fonction régulière. Cela ouvre des possibilités puissantes pour la façon dont vous structurez votre code.
Les fonctions peuvent également être passées comme arguments à d'autres fonctions. C'est particulièrement utile lorsque vous voulez 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) -- Résultat : 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 de caractères.
Les fonctions peuvent même retourner d'autres fonctions. Cela vous permet de créer des fonctions dynamiquement en fonction de certaines conditions ou paramètres :
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Résultat : 10Défi
FacileÉcrivez une fonction applyOperation qui prend a, b, et operation et 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 :
- Extrayez la fonction de la table
operationen utilisant la clé"func" - Appelez cette fonction avec
aetbcomme arguments - Renvoyez le résultat
Paramètres :
a(nombre) : Premier nombreb(nombre) : Deuxième nombreoperation(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 (nombre)
Aide-mémoire
En Lua, les fonctions sont des valeurs de première classe qui peuvent être stockées dans des variables, passées comme arguments et renvoyées par d'autres fonctions.
Stocker une fonction dans une variable :
local greet = function()
print("Hello!")
end
greet() -- Sortie : Hello!Passer une fonction comme argument :
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- Sortie : Hello from a function!Retourner une fonction depuis une autre fonction :
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Sortie : 10Essayez vous-même
function applyOperation(a, b, operation)
-- Écrire 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 Logic & Flow
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() vs. ipairs()Récapitulatif - Fiche de personnage2Plus de fonctions de la bibliothèque table
table.concat()Construction de table & unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des scores3Concepts avancés sur les fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu'est-ce qu'une closure ?Récapitulatif - Gestionnaire d'événements simple