如何枚举 Stream 结果
How to enumerate Stream results
我有一个 Stream,它产生这样的字符串:
'apple'
'orange'
'banana'
当我收听 Stream 时,我想按照产生的顺序从 1 到 n(Stream 长度)为结果分配数字,如下所示:
1: 'apple'
2: 'orange'
3: 'banana'
最好的方法是什么?
因为没有像 Python 中那样的 enumerate()
函数,到目前为止我的尝试非常糟糕:
内部流定义
int n = 0
await for (var nextString in originStream) {
++n;
yield [n, nextString];
}
调用流时
myStream.transform(enumerateFunc)
List enumerateFunc(String myStr){
return [n, myStr];
}
有人建议我为此创建一个 class。但我不想创建一个 class 来简单地按照事件发生的顺序将数字分配给 Stream 事件。
有更好的方法吗?
正如@julemand101 所建议的,一个非常可行的选择是为此目的创建一个 class 并生成 class 而不是 List:
Stream<String> fruits() async* {
int n = 1;
await for (final String fruit in fruitChannel) {
yield Enumerated(n, fruit);
n++;
}
}
我有一个 Stream,它产生这样的字符串:
'apple'
'orange'
'banana'
当我收听 Stream 时,我想按照产生的顺序从 1 到 n(Stream 长度)为结果分配数字,如下所示:
1: 'apple'
2: 'orange'
3: 'banana'
最好的方法是什么?
因为没有像 Python 中那样的 enumerate()
函数,到目前为止我的尝试非常糟糕:
内部流定义
int n = 0
await for (var nextString in originStream) {
++n;
yield [n, nextString];
}
调用流时
myStream.transform(enumerateFunc)
List enumerateFunc(String myStr){
return [n, myStr];
}
有人建议我为此创建一个 class。但我不想创建一个 class 来简单地按照事件发生的顺序将数字分配给 Stream 事件。
有更好的方法吗?
正如@julemand101 所建议的,一个非常可行的选择是为此目的创建一个 class 并生成 class 而不是 List:
Stream<String> fruits() async* {
int n = 1;
await for (final String fruit in fruitChannel) {
yield Enumerated(n, fruit);
n++;
}
}