Manchmal sehe ich das
List list = [];
Dann list..add(color)
Was ist der Unterschied bei der Verwendung von 1 Punkt ( .
) und 2 Punkt ( ..
)?
..
ist als Kaskadenschreibweise bekannt . Sie können nicht dasselbe Ziel wiederholen, wenn Sie mehrere Methoden für dasselbe Objekt aufrufen möchten.
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);
Es ist der Kaskadenbetreiber von Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
führt l1
zu einer Liste[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
führt zu einem Fehler, da .add(0)
zurückgegeben wirdvoid
..
(im ersteren Beispiel) bezieht sich auf new List()
, während .
(im späteren Beispiel) auf den Rückgabewert des vorherigen Teils des Ausdrucks verweist.
..
wurde eingeführt, um die Notwendigkeit zu vermeiden, this
auf alle Arten von Methoden zurückzukehren add()
, um eine API auf flüssige Weise verwenden zu können.
..
bietet dies sofort für alle Klassen an.
.. (in former example) refers to new List()
du, wir schaffen wieder eine neue,List
wenn wir..
meiner Meinung nach NEIN verwenden? Ihrnew
Wort hat mich verwirrt , ist es wirklich NEU oder Sie sprechen hier über einnew
Schlüsselwort.new
ist jetzt optional...
bezieht sich auf die von zurückgegebene Listenew List<int>()
und ermöglicht das Aufrufen mehrerer Methoden wieadd(0)
addAll(...)
ohne Wiederholung.l1.
Es wird die erstellte Listeninstanz zugewiesenl1
, nicht der Rückgabewert der letzten Methode in der Kette (addAll(...)
). Beantwortet das deine Frage?new
es ab Dart 2.0 optional ist. Ich bin gerade durch dennew
obigen Kontext verwirrt worden und danke für Ihre Erklärung...add(6)
ist wiel1.add(6)
,.add(6)
ist wiel1.add(5).add(6)
.add(5)
Erträgevoid
und man kann nicht rufenadd()
anvoid
Das vorherige Beispiel entspricht:
quelle
..onClick
nicht übersetztbutton.classes.onClick
?..
Ist als Kaskadenoperator in Dart bekannt.Sie können mehr als eine Teilsequenzoperation verwenden:
Beispiele:
banerad..load()..show().
Hier ist ein weiteres Beispiel
quelle