如何在 Kotlin 中将 Flow<T> 转换为 Flow<List<T>>?
How to transform Flow<T> to Flow<List<T>> in Kotlin?
我有一个完整的项目流程,例如 Flow。我想将此流程转换为包含所有项目列表的 Flow。
我试过
public fun <T> Flow<T>.toList(): Flow<List<T>> = flow {
val list = toList(mutableListOf())
emit(list.toImmutableList())
}
但是这个函数从不发出值
如果您真正想要的是包含单个 List<T>
元素的流程,那么我认为您做对了。
单个元素将是初始流程中所有项目的列表。
我认为您的问题可能是 Flow.toList()
函数已经存在。
尝试以不同的方式命名:
fun main(args: Array<String>) = runBlocking {
val initialFlow = List(5) { it }.asFlow()
initialFlow.toSingleListItem().collect {
println(it)
}
}
public fun <T> Flow<T>.toSingleListItem(): Flow<List<T>> = flow {
val list = toList(mutableListOf())
emit(list)
}
您可以在此处运行:
https://pl.kotl.in/frCg831WM
我有一个完整的项目流程,例如 Flow。我想将此流程转换为包含所有项目列表的 Flow。
我试过
public fun <T> Flow<T>.toList(): Flow<List<T>> = flow {
val list = toList(mutableListOf())
emit(list.toImmutableList())
}
但是这个函数从不发出值
如果您真正想要的是包含单个 List<T>
元素的流程,那么我认为您做对了。
单个元素将是初始流程中所有项目的列表。
我认为您的问题可能是 Flow.toList()
函数已经存在。
尝试以不同的方式命名:
fun main(args: Array<String>) = runBlocking {
val initialFlow = List(5) { it }.asFlow()
initialFlow.toSingleListItem().collect {
println(it)
}
}
public fun <T> Flow<T>.toSingleListItem(): Flow<List<T>> = flow {
val list = toList(mutableListOf())
emit(list)
}
您可以在此处运行: https://pl.kotl.in/frCg831WM