dart 中如何从发生器中间折断?

plupiseo  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(104)

如何根据某些条件从dart发生器中断开?

fn sync*(...){
  yield 1;
  yield 2;
  if(someCondition()) //cancel/break the generator
  yield 3;
  if(someCondition2()) //cancel/break the generator
  yield 4;
  if(someCondition4()) //cancel/break the generator
  yield 5;
}
5jvtdoz2

5jvtdoz21#

当您希望生成器停止生成新值时,只需从生成器中调用return即可:

Iterable<int> fn(bool flag) sync* {
  yield 1;
  yield 2;
  if (flag) {
    return;
  }
  yield 3;
}

void main() {
  print(fn(true).toList()); // Prints: [1, 2]
  print(fn(false).toList()); // Prints: [1, 2, 3]
}

相关问题