Dart 运算符

~/ ---> 地板除
 
is | is! ---> 类型判断运算符
 
?? | ??= ---> 避空运算符
 
?. ---> 条件属性访问
 
.. ---> 级联运算符
   obj.method(); 返回 method方法的返回值
   obj..method(); 返回 obj对象的引用
void main() {
  print(3 / 2); // 1.5
  // ~/ 向下取整
  print(3 ~/ 2); // 1

  // 类型判断运算符
  String str = "hello world";
  print(str is int); // false
  print(str is String); // true
  print(str is! List); // true

  // 避空运算符
  print(1 ?? 8); // 1
  print(0 ?? 8); // 0
  print(null ?? 8); // 8
  // 如果变量a是null,就返回0
  var a;
  print(a ?? 0); // 0
  var b;
  b = 9;
  print(b ?? 0); // 9
  Map c = {};
  print(c['age']); // null
  // c.age 为null,执行赋值操作
  c['age'] ??= 4;
  print(c); // {age: 4}
  // c.age 不为null,不执行后续赋值操作
  c['age'] ??= 5;
  print(c); // {age: 4}

  // 条件属性运算符(保护可能为空的属性)
  var obj;
  // print(obj.length); // NoSuchMethodError: The getter 'length' was called on null
  print(obj?.length); // null

  // 级联运算符
  List l1 = new List.empty(growable: true);
  l1.add(1);
  l1.add(2);
  print(l1); // [1, 2]

  List l2 = new List.empty(growable: true);
  l2
    ..add(1)
    ..add(2)
    ..add(3)
    ..remove(3);
  print(l2); // [1, 2]
}

 

 

posted @ 2022-04-20 15:16  rogerwu  阅读(94)  评论(0编辑  收藏  举报