【发布时间】:2019-04-07 18:47:07
【问题描述】:
我看到很多教程都用dot,有的用2,这到底是什么意思?
例子,
Array().add()
Animation()..addListener(() {})
【问题讨论】:
我看到很多教程都用dot,有的用2,这到底是什么意思?
例子,
Array().add()
Animation()..addListener(() {})
【问题讨论】:
.. 运算符是飞镖“级联”运算符。当您不关心返回值时,对于链接操作很有用。
这也是总是返回this的可链接函数的飞镖解决方案
以下是这样制作的
final foo = Foo()
..first()
..second();
严格等于:
final foo = Foo();
foo.first();
foo.second();
【讨论】:
foo.first(): 应该是 foo.first();,否则谢谢!
作为一个吹毛求疵的人,.. 实际上并不是 Dart 中的运算符,只是 Dart 语法糖的一部分。
除了提到的使用级联来链接函数调用之外,您还可以使用它来访问同一对象上的字段。
考虑这段代码,取自 Dart 文档:
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
第一个方法调用 querySelector() 返回一个选择器对象。级联符号后面的代码对此选择器对象进行操作,忽略任何可能返回的后续值。
有关级联的更多信息,请查看 Dart 的 outstanding documentation!
【讨论】: