Functional programming Dart中的产量示例

Functional programming Dart中的产量示例,functional-programming,dart,Functional Programming,Dart,如何在Dart中使用与Scala相同的产量? Scala“”中有一个示例 Dart和JavaScript具有异步/等待机制 异步产生值的函数是一个返回流的异步函数 Stream<int> str() async* { // The keyword `async*` means a "generator function" that generates a stream List<int> a = [1, 2, 3, 4, 5]; for (var e in a

如何在Dart中使用与Scala相同的产量? Scala“”中有一个示例


Dart和JavaScript具有异步/等待机制

异步产生值的函数是一个返回流的异步函数

Stream<int> str() async* {
  // The keyword `async*` means a "generator function" that generates a stream
  List<int> a = [1, 2, 3, 4, 5];
  for (var e in a) {
    if (e > 2) yield e;
  }
}

main() async {
  await for (var e in str()) {
    print(e);
  }
}
Stream str()异步*{
//关键字'async*`表示生成流的“生成器函数”
列表a=[1,2,3,4,5];
用于(a中的变量e){
如果(e>2),则产生e;
}
}
main()异步{
等待(str()中的变量e){
印刷品(e);
}
}
(e2)的
屈服e
表达式是Scala中的一个表达式。 它计算为一个数组。Dart没有将其作为直接表达式,但您可以使用大致相同的方式生成返回iterables的函数,然后立即调用它们以创建表达式:

var a=[1,2,3,4,5]
var res=()sync*{for(a中的var v)如果(v>2)产生v;}();

这里我介绍了一个函数
()sync*{for(a中的var v)if(v>2)产生v;}
,并立即调用它。该函数返回一个
Iterable
。iterable的元素是主体生成的值,在本例中是3、4和5。

我不关心Scala。你想实现什么?Dart对函数式编程的支持有多好。这对StackOverflow来说不是个问题。Darts函数支持很好,但是有更好的函数编程语言,如果有帮助的话;-)是否可以在没有异步/等待机制的情况下使用屈服值?您可以使用
sync*
屈服来创建
Iterable
void main() {
  var a = [1, 2, 3, 4, 5];

  for (var e in a) {
    if (e > 2) yield e;
  }
}
Stream<int> str() async* {
  // The keyword `async*` means a "generator function" that generates a stream
  List<int> a = [1, 2, 3, 4, 5];
  for (var e in a) {
    if (e > 2) yield e;
  }
}

main() async {
  await for (var e in str()) {
    print(e);
  }
}