本文基于
Dart 2.4版本,提炼出一些语言上的亮点,针对有一定语言基础的同学快速上手。
操作符(Operators)
?? ??=
看看写下面的代码,当a为null时,使用value来赋值:
a = a == null ? value: a; // java
a = a || value; // javascript
在Dart里使用??可以简写上述代码,
a = a ?? value; // dart
更进一步,使用复合赋值让代码更简要,
a ??= value;
as is is!
用于在运行时检查对象类型
| 操作符 | 表示 |
|---|---|
| as | 类型强制转换 |
| is | 若对象为指定类型返回True |
| is! | 与is相反 |
例如:
if (emp is Person) {
emp.firstName = 'Bob';
}
(emp as Person).firstName = 'Bob';
..
级联操作符,针对同一对象的连续操作,如下:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
使用..操作符可以简写:
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
...
用于集合类的展开操作,使得在向一个Collection集合中插入元素时更加方便。
final list = [1, 2, 3];
final list2 = [
...list,
4]; // [1, 2, 3, 4]
目前
...还不支持对象展开,这一点没有ES6方便
类型系统(Types)
Array即List
在Dart里不再有独立的数组类型,统一使用List表示。
final list = [1, 2, 3];
final list = <int>[1, 2, 3];
由于Dart有丰富的操作符,List完全可以使用类似数组的操作。例如下标操作符[].
final first = list[0];
函数(Functions)
可选命名参数
可选位置参数
类(Classes)
泛型(Generics)
参考资源: