A volte vedo questo
List list = [];
Poi list..add(color)
Qual è la differenza nell'uso di 1 punto ( .
) e 2 punti (..
)?
A volte vedo questo
List list = [];
Poi list..add(color)
Qual è la differenza nell'uso di 1 punto ( .
) e 2 punti (..
)?
Risposte:
..
è noto come notazione a cascata . Ti consente di non ripetere lo stesso target se desideri chiamare più metodi sullo stesso oggetto.
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);
È l'operatore a cascata di Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
risulta in l1
un elenco[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
provoca un errore, perché .add(0)
restituiscevoid
..
(nell'esempio precedente) si riferisce a new List()
, mentre.
(nel seguito) si riferisce al valore restituito della parte precedente dell'espressione.
..
è stato introdotto per evitare la necessità di tornare this
in tutti i tipi di metodi comeadd()
essere in grado di utilizzare un'API in modo fluido.
..
fornisce questo pronto per tutte le classi.
new
è ora facoltativo. ..
fa riferimento all'elenco restituito da new List<int>()
e consente di richiamare più metodi come se add(0)
addAll(...)
non si ripetesse l1.
ed è l'istanza dell'elenco creata a cui è assegnato l1
, non il valore restituito dell'ultimo metodo nella catena ( addAll(...)
). Questo risponde alla tua domanda?
new
è facoltativo a partire da Dart 2.0, sono appena stato confuso dal new
contesto sopra e grazie per la tua spiegazione.
..add(6)
è come l1.add(6)
, .add(6)
è come l1.add(5).add(6)
. add(5)
ritornavoid
e non è possibile chiamare add()
ilvoid
Le cascate (..) consentono di eseguire una sequenza di operazioni sullo stesso oggetto. leggi doc per i dettagli
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
L'esempio precedente equivale a:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
non si traduca in button.classes.onClick
?
..
È noto come l' operatore a cascata in dardo.
Ti consente di utilizzare più di un'operazione di sottosequenza:
Esempi:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Ecco un altro esempio
.. (in former example) refers to new List()
, vuoi dire che stiamo creando di nuovo un nuovoList
quando usiamo..
a mio avviso NO. Sono stato confuso dalla tuanew
parola, è davvero NUOVO o stai parlando dinew
parole chiave qui.