有时我会看到这个List list = [];
然后list..add(color)
使用 1 点(.
)和 2 点(..
)有什么区别?
..
称为 cascade notation。如果您想在同一个对象上调用多个方法,它允许您不重复相同的目标。
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。
..
为所有类提供了开箱即用的功能。
.. (in former example) refers to new List()
,您的意思是我们在使用 ..
时再次创建一个新的 List
,我认为 NO。我对您的 new
词感到困惑,它真的是新词还是您在这里谈论的是 new
关键字。
new
现在是可选的。 ..
引用 new List<int>()
返回的列表,允许在其上调用多个方法,如 add(0)
addAll(...)
而无需重复 l1.
,它是分配给 l1
的创建的列表实例,不是链中最后一个方法的返回值 (addAll(...)
)。这回答了你的问题了吗?
new
从 Dart 2.0 开始是可选的,我只是对上述上下文中的 new
感到困惑,感谢您的解释。
..add(6)
类似于 l1.add(6)
,.add(6)
类似于 l1.add(5).add(6)
。 add(5)
返回 void
,您不能在 void
上调用 add()
级联 (..) 允许您对同一对象进行一系列操作。阅读文档了解详情
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!'));
..onClick
不能转换为 button.classes.onClick
吗?
..
在 dart 中称为 级联运算符。
它允许您使用多个子序列操作:
例子:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
这是另一个例子
https://i.stack.imgur.com/Iv4eL.png
双点(..)也称为级联运算符
如果您想在同一个对象上调用多个方法,它允许您不重复相同的目标。
例如没有双点
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];