主题
运算符
描述 | 运算符 |
---|---|
一元后缀 | *表达式*++ *表达式*-- () [] . ?. |
一元前缀 | -*表达式* !*表达式* ~*表达式* ++*表达式* --*表达式* |
乘除法 | * / % ~/ |
加减法 | + - |
位运算 | << >> >>> |
二进制与 | & |
二进制异或 | ^ |
二进制或 | ` |
关系和类型测试 | >= > <= < as is is! |
相等判断 | == != |
逻辑与 | && |
逻辑或 | ` |
空判断 | ?? |
条件表达式 | *表达式 1* ? *表达式 2* : *表达式 3* |
级联 | .. ?.. |
赋值 | = *= /= += -= &= ^= 等等…… |
运算符的优先级按行先后排列,即第一行优先级最高,最后一行优先级最低,而同一行中,最左边的优先级最高,最右边的优先级最低
类型判断元素符
Operator | Meaning |
---|---|
as | 类型转换(也用作指定类前缀) |
is | 如果对象是指定类型则返回 true |
is! | 如果对象是指定类型则返回 false |
级联运算符
可以让在同一个对象上连续调用多个对象的变量或方法
dart
var map = <int>[]
..add(1)
..add(2)
..forEach((item) => print(item)); // 1 2
// 会被编译成
var map = <int>[];
map.add(1);
map.add(2);
map.forEach((item) => print(item)); // 1 2
使用 ?..
则会保证不会在该空对象上进行任何操作
dart
var map = <int>[]
?..add(1)
..add(2)
..forEach((item) => print(item)); // 1 2
// 会被编译成
var map = <int>[];
map?.add(1);
map?.add(2);
map?.forEach((item) => print(item)); // 1 2
级联可嵌套