¿Enumerar el uso del doble punto (.) en dardo?
A veces veo esto
List list = [];
Entonceslist..add(color)
¿Cuál es la diferencia entre usar 1 punto( .
) y 2 puntos( ..
)?
..
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]);
resulta en un error, porque .add(0)
devuelvevoid
..
(en el ejemplo anterior) se refiere a new List()
, mientras que .
(en el último) 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 listo para usar para todas las clases.
Las cascadas (..) permiten realizar una secuencia de operaciones sobre un 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 equivale a:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
Puntos dobles (..) también conocidos como operador en cascada
Le permite no repetir el mismo objetivo si desea llamar a varios métodos en el mismo objeto.
por ejemplo, sin puntos dobles
var paint = Paint();
paint.color = Colors.black;
paint.strokeCap = StrokeCap.round;
paint.strokeWidth = 5.0;
Pero después de usar "..", el código anterior se escribirá así:
var paint = Paint()
..color = Colors.black
..strokeCap = StrokeCap.round
..strokeWidth = 5.0;
Puntos triples (...), es decir, operador de extensión
“…” también conocido como operador de extensión que proporciona una forma concisa de insertar múltiples valores en una colección. Puedes usar esto para insertar todos los elementos de una lista en otra lista:
Normalmente usamos .add() o .addAll() para agregar datos a la lista como:
var list = [1, 2, 3];
var list2=[];
list2.addAll(list);
Después de usar “…” escribiremos un código como este:
var list = [1, 2, 3];
var list2 = [0, ...list];
..
Se conoce como 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