9. Fonctions

On a vu dans l’article précédent comment démarrait un programme en Dart avec la fonction main. Pour rappel :

On peut déjà voir que pour construire une fonction, on commence avec le type qu’elle retourne. Quand elle ne retourne rien, il est possible d’écrire void ou rien du tout, mais personnellement je trouve ça plus propre de préciser dès le début le type retourné même s’il est inexistant.

void test(){}
//s'écrit aussi
test(){}

Prenons le code suivant :

void main() {
 showAName('Olivia');
}

On appelle une fonction depuis main avec en argument un String. Les variables données à une fonction s’appelles des arguments ou des attributs. Il faudra donc déclarer la fonction showAName dans son code.

void showAName(String s) {
 print("My name is " + s);
}

Ici, on a ainsi une fonction qui prend en argument un string, qui s’écrit de la manière suivante : Type nomVariable. Et si on souhaite que notre fonction retourne une donnée ? Dans la fonction main on ajoute :

var age = 20;
var yearOfBirth = showBirthYearFromAge(age);
print(yearOfBirth);

La variable yearOfBirth contiendra la valeur retournée par la fonction showBirthYearFromAge qui prend en argument un entier ( int ).

int showBirthYearFromAge(int age) {
 var currentYear = 2022;
 return currentYear - age;
}

Ici, on commence ainsi l’écriture de la fonction avec le type de valeur qu’elle va retourner. On récupère l’année en cours dans la variable currentYear et on retourne le résultat de l’année en cours moins l’age qui a été donné en argument. Il est possible d’écrire une fonction courte comme celle-ci sur une seule ligne.

int showBirthYearFromAge(int age) => 2022 - age;

Les arguments peuvent être nommés ou on, optionnels ou requis, avec une valeur par défaut… Vous retrouverez tout cela dans la leçon suivante sur les classes avec les constructeurs (qui sont des fonctions).

Fonctions de haut niveau

Dans un programme Dart ou Flutter, vous pouvez créer des fonctions de haut niveau. Une fonction de haut niveau n’appartient pas à une classe, un des cas d’utilisation sera notamment lorsque vous mettrez en place des isolates.