列举省略号中双点(.)的用法?

有时候我看到这个 List list = []; < / p >

然后list..add(color)

1点(.)和2点(..)的区别是什么?

62183 次浏览

..被称为级联的符号。如果你想在同一个对象上调用多个方法,它允许你不重复同一个目标。

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);

它是Dart的级联运算符

var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);

结果l1是一个列表[0, 1, 2, 3]

var l1 = new List<int>().add(0).addAll([1, 2, 3]);

导致错误,因为.add(0)返回void

..(在前一个例子中)指的是new List(), 而.(在后面)指的是表达式前一部分的返回值

引入..是为了避免在各种方法(如add())中返回this,以便能够流畅地使用API。

..为所有类提供了开箱即用的方法。

级联(..)允许您对同一个对象进行一系列操作。阅读文档了解详情

querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));

前面的例子等价于:

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

..被称为dart中的级联操作

它允许你使用多个子序列操作:

例子:

banerad..load()..show().

List coursename;
coursename..add("java")..add("flutter" )..add("dart");

这是另一个例子

Here is another example

双点(..)也称为级联算子

如果你想在同一个对象上调用多个方法,它允许你不重复同一个目标。

例如:没有双点

var paint = Paint();
paint.color = Colors.black;
paint.strokeCap = StrokeCap.round;
paint.strokeWidth = 5.0;

但是在使用“..,上面的代码将被写成这样:

var paint = Paint()
..color = Colors.black
..strokeCap = StrokeCap.round
..strokeWidth = 5.0;

三重点(…)即扩散运算符

"…"也称为扩展运算符,它提供了一种简明的方法将多个值插入到一个集合中。

可以将一个列表中的所有元素插入到另一个列表中

通常我们使用.add()或.addAll()向列表中添加数据,如下所示:

var list = [1, 2, 3];
var list2=[];
list2.addAll(list);

在使用“…”之后,我们将编写如下代码:

var list = [1, 2, 3];
var list2 = [0, ...list];