Skip to content

运算符

描述运算符
一元后缀*表达式*++ *表达式*-- () [] . ?.
一元前缀-*表达式* !*表达式* ~*表达式* ++*表达式* --*表达式*
乘除法* / % ~/
加减法+ -
位运算<< >> >>>
二进制与&
二进制异或^
二进制或`
关系和类型测试>= > <= < as is is!
相等判断== !=
逻辑与&&
逻辑或`
空判断??
条件表达式*表达式 1* ? *表达式 2* : *表达式 3*
级联.. ?..
赋值= *= /= += -= &= ^= 等等……

运算符的优先级按行先后排列,即第一行优先级最高,最后一行优先级最低,而同一行中,最左边的优先级最高,最右边的优先级最低

类型判断元素符

OperatorMeaning
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

级联可嵌套