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 l1zu 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, thisauf 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.
newist 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?
newes ab Dart 2.0 optional ist. Ich bin gerade durch den newobigen 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 voidund 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!'));
..onClicknicht ü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,Listwenn wir..meiner Meinung nach NEIN verwenden? IhrnewWort hat mich verwirrt , ist es wirklich NEU oder Sie sprechen hier über einnewSchlüsselwort.