Lua - Fonctions

Une fonction est un groupe d'instructions qui exécutent ensemble une tâche. Vous pouvez diviser votre code en fonctions distinctes. La façon dont vous divisez votre code entre différentes fonctions dépend de vous, mais logiquement, la division généralement unique est que chaque fonction effectue une tâche spécifique.

Le langage Lua fournit de nombreuses méthodes intégrées que votre programme peut appeler. Par exemple, méthodeprint() pour imprimer l'argument passé en entrée dans la console.

Une fonction est connue sous différents noms comme une méthode ou une sous-routine ou une procédure etc.

Définition d'une fonction

La forme générale d'une définition de méthode dans le langage de programmation Lua est la suivante -

optional_function_scope function function_name( argument1, argument2, argument3........, 
argumentn)
function_body
return result_params_comma_separated
end

Une définition de méthode en langage de programmation Lua se compose d'un en- tête de méthode et d'un corps de méthode . Voici toutes les parties d'une méthode -

  • Optional Function Scope- Vous pouvez utiliser le mot-clé local pour limiter la portée de la fonction ou ignorer la section scope, ce qui en fera une fonction globale.

  • Function Name- Il s'agit du nom réel de la fonction. Le nom de la fonction et la liste des paramètres constituent ensemble la signature de la fonction.

  • Arguments- Un argument est comme un espace réservé. Lorsqu'une fonction est appelée, vous transmettez une valeur à l'argument. Cette valeur est appelée paramètre ou argument réel. La liste des paramètres fait référence au type, à l'ordre et au nombre d'arguments d'une méthode. Les arguments sont facultatifs; autrement dit, une méthode peut ne contenir aucun argument.

  • Function Body - Le corps de la méthode contient une collection d'instructions qui définissent ce que fait la méthode.

  • Return - Dans Lua, il est possible de renvoyer plusieurs valeurs en suivant le mot-clé return avec les valeurs de retour séparées par des virgules.

Exemple

Voici le code source d'une fonction appelée max(). Cette fonction prend deux paramètres num1 et num2 et renvoie le maximum entre les deux -

--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

Arguments de fonction

Si une fonction doit utiliser des arguments, elle doit déclarer les variables qui acceptent les valeurs des arguments. Ces variables sont appeléesformal parameters de la fonction.

Les paramètres formels se comportent comme les autres variables locales à l'intérieur de la fonction et sont créés à l'entrée dans la fonction et détruits à la sortie.

Appeler une fonction

Lors de la création d'une fonction Lua, vous donnez une définition de ce que la fonction doit faire. Pour utiliser une méthode, vous devrez appeler cette fonction pour exécuter la tâche définie.

Lorsqu'un programme appelle une fonction, le contrôle du programme est transféré à la fonction appelée. Une fonction appelée exécute la tâche définie et lorsque son instruction return est exécutée ou lorsque la fin de sa fonction est atteinte, elle renvoie le contrôle du programme au programme principal.

Pour appeler une méthode, vous devez simplement transmettre les paramètres requis avec le nom de la méthode et si la méthode renvoie une valeur, vous pouvez stocker la valeur retournée. Par exemple -

function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

Lorsque nous exécutons le code ci-dessus, nous obtiendrons la sortie suivante.

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

Assigner et transmettre des fonctions

Dans Lua, nous pouvons affecter la fonction à des variables et également les transmettre en tant que paramètres d'une autre fonction. Voici un exemple simple pour assigner et passer une fonction en tant que paramètre dans Lua.

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

myprint(10)
add(2,5,myprint)

Lorsque nous exécutons le code ci-dessus, nous obtiendrons la sortie suivante.

This is my print function -   ##	10	##
This is my print function -   ##	7	##

Fonction avec argument variable

Il est possible de créer des fonctions avec des arguments variables dans Lua en utilisant '...' comme paramètre. Nous pouvons comprendre cela en voyant un exemple dans lequel la fonction retournera la moyenne et elle peut prendre des arguments variables.

function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

Lorsque nous exécutons le code ci-dessus, nous obtiendrons la sortie suivante.

The average is	5.5