Manchmal sehe ich das
List list = [];
Dann list..add(color)
Was ist der Unterschied bei der Verwendung von 1 Punkt ( .
) und 2 Punkt ( ..
)?
Manchmal sehe ich das
List list = [];
Dann list..add(color)
Was ist der Unterschied bei der Verwendung von 1 Punkt ( .
) und 2 Punkt ( ..
)?
Antworten:
..
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.
new
ist jetzt optional. ..
bezieht sich auf die von zurückgegebene Liste new List<int>()
und ermöglicht das Aufrufen mehrerer Methoden wie add(0)
addAll(...)
ohne Wiederholung. l1.
Es wird die erstellte Listeninstanz zugewiesen l1
, 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 den new
obigen Kontext verwirrt worden und danke für Ihre Erklärung.
..add(6)
ist wie l1.add(6)
, .add(6)
ist wie l1.add(5).add(6)
. add(5)
Erträge void
und man kann nicht rufen add()
anvoid
Mit Kaskaden (..) können Sie eine Folge von Operationen für dasselbe Objekt ausführen. Lesen Sie das Dokument für Details
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
Das vorherige Beispiel entspricht:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
nicht übersetzt button.classes.onClick
?
..
Ist als Kaskadenoperator in Dart bekannt.
Sie können mehr als eine Teilsequenzoperation verwenden:
Beispiele:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Hier ist ein weiteres Beispiel
.. (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.