Parfois je vois ça
List list = [];
ensuite list..add(color)
Quelle est la différence entre l'utilisation de 1 point ( .
) et 2 points ( ..
)?
..
est connue sous le nom de notation en cascade . Il 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);
C'est l'opérateur en cascade de Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
résulte en l1
une liste[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
entraîne une erreur, car .add(0)
renvoievoid
..
(dans le premier exemple) fait référence à new List()
, tandis que .
(dans le dernier) fait référence à la valeur de retour de la partie précédente de l'expression.
..
a été introduit pour éviter le besoin de revenir this
dans toutes sortes de méthodes, comme add()
pouvoir utiliser une API de manière fluide.
..
fournit ceci hors de la boîte pour toutes les classes.
.. (in former example) refers to new List()
vous référant , voulez-vous dire que nous créons à nouveau un nouveauList
lorsque nous utilisons..
à mon avis NON. Je suis confus par votrenew
mot, est-ce vraiment NOUVEAU ou vous parlez denew
mot-clé ici.new
est désormais facultatif...
fait référence à la liste retournée parnew List<int>()
et permet d'appeler plusieurs méthodes dessus commeadd(0)
addAll(...)
sans répétitionl1.
et c'est l'instance de liste créée qui est assignéel1
, pas la valeur de retour de la dernière méthode dans la chaîne (addAll(...)
). Est-ce que cela répond à votre question?new
c'est facultatif à partir de Dart 2.0, je viens d'être confus par lenew
contexte ci-dessus et merci pour votre explication...add(6)
est commel1.add(6)
,.add(6)
est commel1.add(5).add(6)
.add(5)
retoursvoid
et vous ne pouvez pas appeleradd()
levoid
L'exemple précédent équivaut à:
la source
..onClick
ne se traduit pasbutton.classes.onClick
?..
Est connu comme l' opérateur en cascade dans Dart.Il vous permet d'utiliser plus d'une opération de sous-séquence:
Exemples:
banerad..load()..show().
Voici un autre exemple
la source