A veces veo esto
List list = [];
Luego list..add(color)
¿Cuál es la diferencia al usar 1 punto ( .
) y 2 puntos ( ..
)?
A veces veo esto
List list = [];
Luego list..add(color)
¿Cuál es la diferencia al usar 1 punto ( .
) y 2 puntos ( ..
)?
Respuestas:
..
se conoce como notación en cascada . Le permite no repetir el mismo objetivo si desea llamar a varios métodos en el mismo objeto.
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 el operador en cascada de Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
resulta en l1
ser una lista[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
da como resultado un error, porque .add(0)
devuelvevoid
..
(en el ejemplo anterior) se refiere new List()
, mientras que .
(en el segundo) se refiere al valor de retorno de la parte anterior de la expresión.
..
se introdujo para evitar la necesidad de regresar this
en todo tipo de métodos, como add()
poder usar una API de manera fluida.
..
proporciona esto fuera de la caja para todas las clases.
new
es ahora opcional. ..
se refiere a la lista devuelta por new List<int>()
y permite invocar múltiples métodos como si add(0)
addAll(...)
no se repitiera, l1.
y es la instancia de lista creada a la que se asigna l1
, no el valor de retorno del último método en la cadena ( addAll(...)
). ¿Responde esto a tu pregunta?
new
es opcional comenzando con Dart 2.0, acabo de confundirme con el new
contexto anterior y gracias por su explicación.
..add(6)
es como l1.add(6)
, .add(6)
es como l1.add(5).add(6)
. add(5)
retornos void
y no se puede llamar add()
envoid
Las cascadas (..) le permiten realizar una secuencia de operaciones en el mismo objeto. lea el documento para más detalles
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
El ejemplo anterior es equivalente a:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
no se traduce a button.classes.onClick
?
..
Se conoce como el operador en cascada en dardo.
Le permite utilizar más de una operación de subsecuencia:
Ejemplos:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Aquí hay otro ejemplo
.. (in former example) refers to new List()
, ¿quiere decir que estamos creando una nuevaList
cuando estamos usando..
NO en mi opinión? Tunew
palabra me confundió , ¿es realmente NUEVO o estás hablando denew
palabras clave aquí?