【发布时间】:2021-04-27 22:55:12
【问题描述】:
我对 Dart 还很陌生,而且我的头还在流中。具体来说,我很难找到正确的方法来制作一个函数,该函数从流中获取一个包含 N 个元素的窗口,对其应用一个函数并重新流式传输结果。
为了澄清我的意思,我提供了一个我自己实现的示例,这导致我提出了这个问题。该代码从文件中获取字节流并将 4 字节块转换为整数流。通过使用await for,我能够完成我想要的,但我正在寻找一个更惯用的基于流的函数来完成同样的事情,更简洁。
Stream<int> loadData(String path) async* {
final f = File(path);
final byteStream = f.openRead();
var buffer = Uint8List(8);
var i = 0;
// This is where I would like to use a windowing function
await for(var bs in byteStream) {
for(var b in bs) {
buffer[i++] = b;
if(i == 8) {
var bytes = new ByteData.view(buffer.buffer);
yield bytes.getUint16(0);
i = 0;
}
}
}
}
【问题讨论】:
标签: dart dart-async dart-stream