C# 8 现在有 IAsyncEnumerable 。有与此等效的 Kotlin 吗?例如,在 C# 中,您现在可以 await foreach(...)
(使用 IAsyncEnumerable
):
async Task Main()
{
await foreach(var dt in new Seconds().Take(10))
{
Console.WriteLine(dt);
}
}
public class Seconds : IAsyncEnumerable<DateTime>
{
public class FooEnumerator : IAsyncEnumerator<DateTime>
{
public DateTime Current { get; set; }
public async ValueTask DisposeAsync() {}
public async ValueTask<bool> MoveNextAsync()
{
await Task.Delay(1000);
Current = DateTime.Now;
return true;
}
}
public IAsyncEnumerator<DateTime> GetAsyncEnumerator(CancellationToken cancellationToken = default)
=> new FooEnumerator();
}
最佳答案
看看Asynchronous Flow ,这似乎是最接近的等价物。
类似的例子是:
fun main() = runBlocking {
seconds().take(10).collect {
println(it)
}
}
fun seconds() = flow<Instant> {
while (true) {
delay(1000L)
emit(Instant.now())
}
}
我正在使用kotlinx-coroutines-core
版本1.3.9
关于kotlin - Kotlin 中与 C# 8 的异步枚举等效的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64286283/