Les fonctions avec LÖVE2D

Les variables nous permettent de stocker des valeurs. Avec les fonctions, nous pouvons stocker des morceaux de code. Cela nous permet d’exécuter ce code chaque fois que nous le souhaitons. Il existe 2 façons de les créer, la deuxième étant la plus courante :

1
2
3
exemple = function()
  print("Hello World!")
end

et

1
2
3
function exemple()
  print("Hello World!")
end

Vous commencez par écrire le mot-clé function suivi du nom de la fonction. Une fonction est un type de variable, donc les mêmes règles de nommage s’y appliquent. Le nom de la fonction ci-dessus est “exemple”. Après le nom, nous mettons des parenthèses (). Maintenant, nous pouvons mettre du code à l’intérieur de cette fonction. Dans ce cas, nous avons simplement mis print(“Hello World!”). Lorsque ceci est fait, il faut terminer la fonction avec le mot-clé end.

Notez que si vous exécutez le code précédent, vous ne verrez pas « Hello World! » dans la console car nous n’avons pas encore exécuté la fonction. Pour le faire, nous devons en plus écrire ceci :

1
2
exemple()
-- Sortie: Hello World!

Vous devez simplement écrire le nom de la fonction suivi des parenthèses. C’est ce que nous appelons un appel de fonction.

Les paramètres

Jetez un œil à ce code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function example(num)
  print("I like the number " .. num)
end

example(15)
example(2)
example(44)
example(100)
print(num)

-- Sortie:
-- I like the number 15
-- I like the number 2
-- I like the number 44
-- I like the number 100
-- nil

Entre les parenthèses de la fonction, nous pouvons mettre ce que nous appelons des paramètres. Ce sont des variables temporaires qui n’existent que dans la fonction. Dans notre cas, on place le paramètre num et ensuite, nous pouvons l’utiliser comme n’importe quelle autre variable.

Nous exécutons notre fonction plusieurs fois et chaque fois avec un nombre différent. Nous affichons aussi la même phrase mais avec un nombre différent. Le nombre que nous mettons entre parenthèses est ce que nous appelons un argument. Dans le premier appel de fonction, nous passons l’argument 15 au paramètre num.

À la fin de notre code, nous affichons num à l’extérieur de notre fonction. Cela nous renvoie nil, ce qui signifie que num n’est pas un nombre, une chaîne de caractères ou une fonction. C’est parce que, comme je l’ai dit, les paramètres sont des variables qui ne sont disponibles que dans la fonction.

Return

Une fonction peut retourner une valeur que nous pouvons stocker dans une variable, par exemple. Pour ce faire, il faut utiliser le mot-clé return :

1
2
3
4
5
6
7
function giveMeFive()
  return 5
end

a = giveMeFive()
print(a)
-- Sortie: 5

La variable a contient la valeur retournée par la fonction giveMeFive.
Un autre exemple :

1
2
3
4
5
6
7
-- Plusieurs paramètres peuvent être passés en arguments, séparés par une virgule
function sum(a, b)
  return a + b
end

print(sum(200, 95))
-- Sortie: 295

Notre fonction sum retourne la somme de a et b. Nous n’avons pas nécessairement besoin de stocker la valeur de retour de la fonction dans une variable d’abord. Nous pouvons l’utiliser directement, comme dans l’exemple ci-dessus où nous l’affichons immédiatement.

Utilisation

Souvent, vous souhaitez exécuter certains codes à plusieurs endroits. Au lieu de copier ce code chaque fois que vous souhaitez l’utiliser, nous pouvons simplement ajouter un appel de fonction. Si par la suite nous voulons changer le comportement de cette fonction, il suffit de la modifier à un seul endroit, qui est la définition de la fonction elle-même. De cette façon, nous évitons de répéter le code. Ne vous répétez pas (DRY - Don’t Repeat Yourself) est l’un des principes de programmation les plus importants.

Résumé

Les fonctions peuvent stocker du code que nous pouvons exécuter à tout moment. Nous appelons une fonction en écrivant son nom suivi de parenthèses. Nous pouvons mettre des valeurs à l’intérieur de ces parenthèses. Ces valeurs sont transmises aux paramètres de la fonction, qui sont des variables temporaires qui n’existent qu’au sein de la fonction. Les fonctions peuvent également renvoyer une valeur. Les fonctions éliminent la répétition de code, ce qui est une bonne pratique de programmation.