首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Dart (颤动)中将两个“yield”放在一起,只有第二个会被执行

在Dart中,将两个"yield"放在一起时,只有第二个会被执行。这是因为在Dart中,"yield"关键字用于定义一个生成器函数,它可以产生一个序列的值。当执行到一个"yield"语句时,函数会暂停执行并将当前的值返回给调用者。当再次调用生成器函数时,它会从上次暂停的地方继续执行。

当两个"yield"放在一起时,第一个"yield"会执行并返回一个值,但是生成器函数会立即暂停。第二个"yield"语句不会被执行,因为生成器函数已经暂停了。如果想要执行第二个"yield"语句,需要再次调用生成器函数。

以下是一个示例代码,演示了在Dart中将两个"yield"放在一起的情况:

代码语言:txt
复制
Iterable<int> generateNumbers() sync* {
  yield 1;
  yield 2;
}

void main() {
  var numbers = generateNumbers();
  
  print(numbers.first);  // 输出:1
  print(numbers.last);   // 输出:2
}

在上面的示例中,generateNumbers是一个生成器函数,使用了sync*关键字来定义。它包含了两个"yield"语句,分别产生了值1和值2。当我们调用generateNumbers函数时,它会返回一个可迭代对象numbers。我们可以通过numbers.firstnumbers.last来获取生成器函数产生的第一个和最后一个值。

需要注意的是,生成器函数在每次调用时都会从上次暂停的地方继续执行,直到没有更多的"yield"语句可执行为止。如果我们想要执行第二个"yield"语句,可以再次调用生成器函数,例如:

代码语言:txt
复制
void main() {
  var numbers = generateNumbers();
  
  print(numbers.first);  // 输出:1
  
  numbers = generateNumbers();  // 再次调用生成器函数
  
  print(numbers.last);   // 输出:2
}

在这个示例中,我们再次调用了generateNumbers函数,并将返回的可迭代对象赋值给numbers。这样,我们就可以获取到第二个"yield"语句产生的值。

总结起来,当在Dart中将两个"yield"放在一起时,只有第二个"yield"会被执行。如果想要获取第一个"yield"产生的值,需要在调用生成器函数之前获取。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券