生成器 5个月前

编程语言
844
生成器

当你需要懒惰地生成一系列的值时,考虑使用一个“生成器函数” (generator function)。Dart 对这类生成器函数有内置的支持:

  • 同步的生成器:返回一个 Iterable 对象。
  • 异步的生成器:返回一个 Stream 对象。

要实现一个同步的生成器函数,使用 sync* 标记函数体,并使用 yield 语句传递值:

Iterable<int> naturalsTo(int n) sync* {
  int k = 0;
  while (k < n) yield k++;
}

要实现一个异步的生成器函数,使用 async* 标记函数体,并使用 yield 语句传递值:

Stream<int> asynchronousNaturalsTo(int n) async* {
  int k = 0;
  while (k < n) yield k++;
}

如果你的生成器是递归的,可以使用 yield* 增进它的性能:

Iterable<int> naturalsDownFrom(int n) sync* {
  if (n > 0) {
    yield n;
    yield* naturalsDownFrom(n - 1);
  }
}
image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2243878
累计阅读

热门教程文档

React Native
40小节
C#
57小节
Rust
84小节
Golang
23小节
Djiango
17小节