Recherche…


Remarques

Dart est un véritable langage orienté objet, donc même les fonctions sont des objets et ont un type, Fonction. Cela signifie que les fonctions peuvent être affectées à des variables ou transmises comme arguments à d'autres fonctions. Vous pouvez également appeler une instance d'une classe Dart comme s'il s'agissait d'une fonction.

Fonctions avec paramètres nommés

Lors de la définition d'une fonction, utilisez {param1, param2,…} pour spécifier les paramètres nommés:

void enableFlags({bool bold, bool hidden}) {
  // ...
}

Lors de l'appel d'une fonction, vous pouvez spécifier des paramètres nommés à l'aide de paramName: value

enableFlags(bold: true, hidden: false);

Fonction scoping

Les fonctions Dart peuvent également être déclarées anonymement ou imbriquées. Par exemple, pour créer une fonction imbriquée, ouvrez simplement un nouveau bloc fonction dans un bloc fonction existant.

void outerFunction() {
  
    bool innerFunction() {
        /// Does stuff
    }
}

La fonction innerFunction peut maintenant être utilisée à l'intérieur, et uniquement à l'intérieur, outerFunction . Aucune autre fonction n'y a accès.

Les fonctions dans Dart peuvent également être déclarées de manière anonyme, ce qui est couramment utilisé comme argument de fonction. Un exemple courant est la méthode de sort de l'objet List . Cette méthode prend un argument facultatif avec la signature suivante:

int compare(E a, E b)

La documentation indique que la fonction doit retourner 0 si a et b sont égaux. Il renvoie -1 si a < b et 1 si a > b .

Sachant cela, nous pouvons trier une liste d'entiers en utilisant une fonction anonyme.

List<int> numbers = [4,1,3,5,7];

numbers.sort((int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
});

La fonction anonyme peut également être liée à des identificateurs tels que:

Function intSorter = (int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
}

et utilisé comme une variable ordinaire.

numbers.sort(intSorter);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow