Dart笔记

一直稀里糊涂地用,没仔细学习一下。记录一下在官网学习的笔记吧。

sync* 、 async* 、yield

标记为sync*的函数返回一个Iterable,用例如下:

void main() {
  final numbers = getRange(1, 10);
  for (var value in numbers) {
    print('$value');
  }
}

Iterable<int> getRange(int start, int end) sync* { 
  for (int i = start; i <= end; i++) {
    yield i;
  }
}

async*和sync*类似,不过是异步的,返回值会被包裹在Stream中,用例如下:

Stream<int> countForOneMinute() async* {
  for (int i = 1; i <= 60; i++) {
    await Future.delayed(const Duration(seconds: 1));
    yield i;
  }
}

main() async {
  await for (int i in countForOneMinute()) {
    print(i); // 打印 1 到 60,一个秒一个整数
  }
}

函数

=> 表达式 是 { return 表达式; } 的简写

匿名函数

([[类型参数[, …]]) {
函数体;
}

运算符

~/ 除并取整

命名式构造函数

const double xOrigin = 0;
const double yOrigin = 0;

class Point {
  double x = 0;
  double y = 0;

  Point(this.x, this.y);

  // Named constructor
  Point.origin()
      : x = xOrigin,
        y = yOrigin;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注