Dart:操作符

  1. 操作符总览(按优先级从高到低)
  2. 空安全相关
  3. 类型判断与转换
  4. 条件表达式

操作符总览(按优先级从高到低)

优先级 操作符 说明 示例
1 (), [], ., ?. 调用函数 / 访问集合 / 成员访问 / 空安全访问 foo(), list[0], obj.name, obj?.name
2 -expr, !expr, ~expr, await 单目负号 / 逻辑非 / 按位取反 / 异步等待 -a, !isOk, ~x, await future
3 *, /, ~/, % 乘 / 除 / 整除 / 取余 a * b, a ~/ b
4 +, - 加 / 减 a + b, a - b
5 <<, >>, >>> 位移(逻辑右移从 Dart 2.14 支持) a << 2
6 & 按位与 a & b
7 ^ 按位异或 a ^ b
8 ` ` 按位或
9 <, >, <=, >=, as, is, is! 比较 / 类型判断 / 类型转换 a < b, obj is String
10 ==, != 相等 / 不等 a == b
11 ?? 空合并(null 合并) a ?? b
12 && 逻辑与 a && b
13 ` `
14 ?:(条件运算符) 三元运算 cond ? a : b
15 =, +=, -=, *=, /=, ??= 赋值及复合赋值 a = b, a += 1, a ??= 0
16 .. 级联运算符 obj..method()

空安全相关

?. → 空安全访问:如果前面是 null,直接返回 null,不报错

?? → 空合并:如果前面是 null,返回右边

??= → 空合并赋值:如果变量是 null,赋值右边的内容

  String? name;
  print(name?.isEmpty); // null 安全,name 可能为 null,所以使用 ?. 来调用 isEmpty 方法
  print(name ?? "Guest"); // 输出 Guest
  print(name ??= "Tom"); // name 是 null,所以赋值为 "Tom"
  print(name); // 输出 Tom

类型判断与转换

is → 类型判断

is! → 不是该类型

as → 类型转换(可能抛异常)

int a = 123;
String b = 'ducafecat';
String c = 'abc';
print(a as Object); // 123
print(b is String); // true
print(c is! String); // false

条件表达式

操作符 解释
condition ? expr1 : expr2 如果 conditiontrue,执行 expr1 (并返回执行的结果); 否则执行 expr2 并返回其结果。
bool isFinish = true;
String txtVal = isFinish ? 'yes' : 'no';
print(txtVal); // 输出: yes

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1909773034@qq.com

×

喜欢就点赞,疼爱就打赏