flutter - Dart 中的 yield 和 yield* 之间的差异

标签 flutter dart

我想知道这两者有什么区别。我在 javascript 上找到了这个 SO 帖子,Delegated yield (yield star, yield *) in generator functions

据我了解,yield*委托(delegate)给另一个生成器,在另一个生成器停止生成值后,它会继续生成自己的值。

Dart 方面的解释和示例会有所帮助。

最佳答案

yield它用于从生成器异步或同步发出值。
示例:

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

void main() {
  str(3).forEach(print);
}
输出:
1
2
3
yield*它将调用委托(delegate)给另一个生成器,在该生成器停止生成值后,它会继续生成自己的值。
示例:
Stream<int> str(int n) async* {
  if (n > 0) {  
    await Future.delayed(Duration(seconds: 1));
    yield n;
    yield* str(n - 1);
  }
}

void main() {
  str(3).forEach(print);
}
输出:
3
2 
1 

关于flutter - Dart 中的 yield 和 yield* 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492517/

相关文章:

Flutter_ffmpeg : how to get video and audio from url or storage

random - 在 Dart 中生成唯一的随机数

dart - 在Linux Armhf机器上构建 “Dart SDK”的问题

email - Flutter - 如何实现一个电子邮件 TextFormField 小部件在多个屏幕中使用?

listview - 如何在 Flutter 的粘性标题下对列表项进行分组

firebase - 从 firebase 获取数据到 flutter

regex - Safari 对前瞻和后置 RegExp 的支持

dart - 流订阅在 flutter 应用程序中的 dart 中抛出错误?

flutter - 我正在尝试在“弹出菜单”中实现onTap()函数,但无法这样做

dart - Dart Compress Uint8列表图像