fbpx

5. Les fonctions en Dart

Les fonctions sont indispensables aux programmes informatiques, elles permettent d’exécuter un code en faisant rapidement appel à elles.

Il existe des fonctions Dart préconçues, comme la fonction print() qui affiche du contenu dans la console.

Mais il est aussi possible de créer des fonctions dans notre code Dart, pour le structurer et séparer les différentes actions.

Je tiens à préciser au passage que si vous ne retenez pas le nom de ces différents types de fonction, il n’y a aucun problème.

Ces noms nous permettent juste d’aborder les variantes possibles lorsque nous créons des fonctions Dart.

1. Les fonctions de haut niveau

On commence par aborder à nouveau notre fonction principale main() et dite de « haut niveau« .

void main() {
	// Votre code Dart
}

Je tiens à reparler dès maintenant de cette fonction main() car toutes les notions que nous allons aborder par la suite s’applique à elle aussi.

Pour rappel, la fonction main() est le point d’entrée de notre code Dart, la fonction via laquelle tout notre code va s’exécuter.

Nous allons voir différents types de fonctions, avec certains éléments à renvoyer ou simplement du code à exécuter.

Dans tous les cas, c’est via notre fonction haute main() que passera toute l’exécution de notre code.

2. Les fonctions anonymes

On continue avec le deuxième type de fonction à aborder, celui des fonctions dites "anonymes".

Une fonction anonyme est incluse dans une autre fonction et ne retourne aucun résultat.

Voilà un premier exemple avec la fonction HelloWorld():

Function HelloWorld = () {
  print('Hello');
};

Son seul rôle est d'exécuter du code, on ne peut pas récupérer ou stocker un résultat:

HelloWorld();

Un autre exemple avec la fonction proposée par Dart qui consiste à afficher une phrase avec un nombre dans la console:

Function printInteger = (int aNumber) {
  print('The number is $aNumber.');
};

Cette fonction prend un paramètre de type nombre, que l'on déclare avec le mot "int" placé devant.

On devra faire appel à cette fonction en lui indiquant obligatoirement un paramètre de type nombre, par exemple:

printInteger(42);

Cette fonction aura donc simplement pour rôle d'afficher du contenu dans la console. Mais il est possible d'effectuer d'autres opérations dans une fonction.

Notamment de retourner des données pour les stocker ou les réutiliser à d'autres endroits de notre code.

3. Les fonctions de premier ordre

On aborde ensuite le troisième type de fonctions dites de "premier ordre" qui permettent de renvoyer un résultat.

Une fonction de premier ordre renvoie des données qui peuvent être utilisées ou stockées.

Par exemple cette fonction calcule et retourne la somme de deux nombres:

int add(int n1, int n2) {
  int result;
  result = n1 + n2;
  return result;
}

void main() {
  int number = add(10, 23);
  print(number);
}

Cette notion de retour de données signifie que je peux récupérer le résultat de ma fonction et le stocker dans une variable par exemple.

Ce return peut servir par exemple dans le cas d'une requête Firebase où l'on renvoie la photo de profil d'un utilisateur.

Les paramètres d'une fonction peuvent également être des chaînes de caractères, des booléens ou des Maps.

Par exemple cette fonction associe deux mots pour former une phrase:

String combine(String w1, String w2) {
  String result;
  result = w1 + ' ' +  w2;
  return result;
}

void main() {
  String sentence = combine('Hello', 'World');
  print(sentence);
}

Vous l'avez remarqué, il faut à chaque fois que l'on déclare une fonction de premier ordre, préciser le type de donnée renvoyée.

Par exemple pour renvoyer une chaîne de caractère, on précise String et pour un nombre int.

On termine avec la dernière subtilité de ce type de fonction, qui de pouvoir directement utiliser des opérations de calcul dans l'élément à renvoyer.

Par exemple pour calculer la somme de deux nombres:

num somme(num nombre1, num nombre2) {
  return nombre1 + nombre2;
}

void main() {
  print(somme(1, 2));
}

Ici on précise le type de donnée num pour notre fonction et les paramètres pour inclure les entiers et les décimaux (int et double).

Voilà par exemple les trois autres exemples avec les opérations mathématiques de bases:

num soustraction(num nombre1, num nombre2) {
  return nombre1 - nombre2;
}

num multiplication(num nombre1, num nombre2) {
  return nombre1 * nombre2;
}

num division(num nombre1, num nombre2) {
  return nombre1 / nombre2;
}

L'intérêt donc à chaque fois est de pouvoir récupérer les résultats de nos fonctions de premier ordre.

Soit, en le stockant dans une variable:

String sentence = combine('Hello', 'World');

Soit en mettant directement la fonction en tant que paramètre dans une autre fonction par exemple:

print(somme(1, 2));

Voilà pour les bases des fonctions de Dart, que nous utiliserons régulièrement pour dynamiser nos applications Flutter.