Kotlin与C#8'的等价物是什么;s异步可枚举?

Kotlin与C#8'的等价物是什么;s异步可枚举?,kotlin,async-await,kotlin-coroutines,Kotlin,Async Await,Kotlin Coroutines,C#8现在有了。有一个科特林相当于这个吗?例如,在C#中,您可以立即等待foreach(…)(使用IAsyncEnumerable): async Task Main() { 等待foreach(var dt以新秒为单位().Take(10)) { 控制台写入线(dt); } } 公共类秒数:IAsyncEnumerable { 公共类FooEnumerator:IAsyncEnumerator { 公共日期时间当前{get;set;} 公共异步值任务DisposeAsync(){} 公共异步值

C#8现在有了。有一个科特林相当于这个吗?例如,在C#中,您可以
立即等待foreach(…)
(使用
IAsyncEnumerable
):

async Task Main()
{
等待foreach(var dt以新秒为单位().Take(10))
{
控制台写入线(dt);
}
}
公共类秒数:IAsyncEnumerable
{
公共类FooEnumerator:IAsyncEnumerator
{
公共日期时间当前{get;set;}
公共异步值任务DisposeAsync(){}
公共异步值任务MoveNextAsync()
{
等待任务。延迟(1000);
当前=日期时间。现在;
返回true;
}
}
公共IAsyncEnumerator GetAsyncEnumerator(CancellationToken CancellationToken=默认值)
=>新的FooEnumerator();
}
看一下,这似乎是最接近的等价物

一个类似的例子是:

fun main() = runBlocking {
    seconds().take(10).collect {
        println(it)
    }
}

fun seconds() = flow<Instant> {
    while (true) {
        delay(1000L)
        emit(Instant.now())
    }
}
fun main()=运行阻塞{
秒(){
println(it)
}
}
fun seconds()=流{
while(true){
延迟(1000L)
emit(Instant.now())
}
}
我正在使用版本