web-dev-qa-db-fra.com

Lister l’utilisation de double point (.) Dans une fléchette?

Parfois, je vois ceci List list = [];

Alors list..add(color)

Quelle est la différence en utilisant 1 point (.) et 2 points (..)?

22
Daniel Mana

.. est appelé notation en cascade . Cela vous permet de ne pas répéter la même cible si vous souhaitez appeler plusieurs méthodes sur le même objet.

List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);

// with cascade

List list = [];
list
  ..add(color1)
  ..add(color2)
  ..add(color3)
  ..add(color4);
42
Alexandre Ardhuin

C'est l'opérateur de cascade de Dart

var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);

l1 est une liste [0, 1, 2, 3]

var l1 = new List<int>().add(0).addAll([1, 2, 3]);

entraîne une erreur, car .add(0) renvoie void

.. (dans le premier exemple) fait référence à new List(), tandis que . (plus tard) se réfère à la valeur de retour de la partie précédente de l'expression.

.. a été introduit pour éviter la nécessité de renvoyer this dans toutes sortes de méthodes, telles que add(), afin de pouvoir utiliser une API de manière fluide.

.. fournit ceci immédiatement pour toutes les classes.

18
Günter Zöchbauer