Answers:
..
被称为级联表示法。如果要在同一个对象上调用多个方法,则可以不重复相同的目标。
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()
,而.
(在后一个示例中)指表达式前一部分的返回值。
..
引入是为了避免需要返回this
各种方法,例如add()
能够流畅地使用API。
..
为所有类提供开箱即用的功能。
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
,你不能叫add()
上void
级联(..)允许您对同一对象执行一系列操作。阅读文档以获取详细信息
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
吗?
.. (in former example) refers to new List()
,您是说我们认为使用NOList
时会再次创建新的..
。您的new
话让我感到困惑,是真的吗?还是您在new
这里谈论关键字。