dart注意点记录

  • constfinal : const变量是编译时常量(const变量隐式为final变量),它在编译过程中初始化的并占用内存空间。final变量在首次使用时被初始化。

  • => expr 是一种简写,相当于{ return expr; }. =>有时候被称为箭头语法.

  • String say(String from, String msg, [String device])[]包含的是可选参数

  • 注意下面的addBy

Function makeAdder(num addBy) {
  return (num i) => addBy + i;
}

void main() {
  // Create a function that adds 2.
  var add2 = makeAdder(2);

  // Create a function that adds 4.
  var add4 = makeAdder(4);

  assert(add2(3) == 5);
  assert(add4(3) == 7);
}
  • 除法需要注意的地方:
assert(5 / 2 == 2.5); // Result is a double
assert(5 ~/ 2 == 2); // Result is an int
  • b为null的时候赋值
b ??= value;
  • expr1 ?? expr2
    如果expr1为非null,则返回其值; 否则,计算并返回expr2的值。

  • ..级联符号是对上一个方法的返回值进行操作的

  • continue跳转

var command = 'OPEN';
switch (command) {
  case 'OPEN':
    continue nowClosed;
  
  case 'CLOSED':
    print('closed');
    break;
  nowClosed:
  default:
    print('default');
}
  • is
class A{

}
class B extends A{

}

A a = A();
  B b = B();
  if(b.runtimeType == A) {
    print('b.runtimeType is A');
  }
  else {
    print('b.runtimeType is not A');
  }
  if(b is A) {
    print('b is A');
  }
  else {
    print('b is not A');
  }
  • Dart的垃圾回收也采用了多生代算法,新生代在回收内存时采用了“半空间”算法,触发垃圾回收时Dart会将当前半空间中的“活跃”对象拷贝到备用空间,然后整体释放当前空间的所有内存:


    0b52c944.png

    整个过程中Dart只需要操作少量的“活跃”对象,大量的没有引用的“死亡”对象则被忽略,这种算法也非常适合Flutter框架中大量Widget重建的场景。

  • await关键字必须在async函数内部使用

  • @protected : 只子类可用,同文件内没限制。

你可能感兴趣的:(dart注意点记录)