Flutter Dart 操作符

49 阅读1分钟

操作符

地板除 ~/

var a = 10;
print("a = ${a ~/ 3}"); //地板除 向下取整

?? 空判断运算符

 var b;
//??空判断运算符。如果左边的 b 是null 就复制给 b
 b ??= 10;
 print("b = $b");

?. 非空判断运算符

  var p1 = null;
  print(p1?.age ?? "NULL") ;// p1?.age ==  null

.. 和 ?.. 级联运算符

  //级联运算符, .. ?..
  //..做链式调用 UI 中经常使用;
  final p = Person(10, "name")
    ..age = 20
    ..name = "BOB";
  print(p.age);
  print(p.name);

例子:

void main(List<String> args) {
  var a = 10;
  print("a = ${a ~/ 3}"); //地板除
  var b;
  //??空判断运算符。如果左边的b 是null 就复制给b
  b ??= 10;
  print("b = $b");
  //级联运算符, .. ?..
  //..做链式调用 UI 中经常使用;
  final p = Person(10, "name")
    ..age = 20
    ..name = "BOB";
  print(p.age);
  print(p.name);
  //?[] 数组判空访问list

  // if else
  // for
  // while 和 do-while
  // break 和 continue
  // switch 和 case
  // assert
  var message = StringBuffer('Dart is fun');
  for (var i = 0; i < 5; i++) {
    message.write("!");
  }
  print(message);

  var callbacks = [];
  for (var i = 0; i < 2; i++) {
    callbacks.add(() => print(i));
  }
  //map 中先打印a 然后返回本身,映射替换元素。
  callbacks.map((e) {
    print("a");
    e();
  }).forEach((itemFunc) => itemFunc);

  // for (var element in callbacks) {
  //   element();
  // }
  print("------");
  [1, 2, 3].where((v) => v == 2).forEach((e) {
    print(e);
  });
  print("------");
  [1, 2, 3].takeWhile((v) => v <= 2).forEach((v) {
    print(v);
  });
}

class Person {
  int age;
  String name;
  Person(this.age, this.name);
}