Parfois je vois ça
List list = [];
ensuite list..add(color)
Quelle est la différence entre l'utilisation de 1 point ( .
) et 2 points ( ..
)?
Parfois je vois ça
List list = [];
ensuite list..add(color)
Quelle est la différence entre l'utilisation de 1 point ( .
) et 2 points ( ..
)?
Réponses:
..
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.
new
est désormais facultatif. ..
fait référence à la liste retournée par new List<int>()
et permet d'appeler plusieurs méthodes dessus comme add(0)
addAll(...)
sans répétition l1.
et c'est l'instance de liste créée qui est assignée l1
, 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 le new
contexte ci-dessus et merci pour votre explication.
..add(6)
est comme l1.add(6)
, .add(6)
est comme l1.add(5).add(6)
. add(5)
retours void
et vous ne pouvez pas appeler add()
levoid
Les cascades (..) vous permettent de faire une séquence d'opérations sur le même objet. lire la doc pour plus de détails
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
L'exemple précédent équivaut à:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
ne se traduit pas button.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().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Voici un autre exemple
.. (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.