如何在 Kotlin 的 MutableStateFlow 中添加、前置和附加值
How to add, prepend and append value in MutableStateFlow in Kotlin
嘿,我是 Kotlin Flow 的新手。我正在使用 MutableStateFlow 在流中添加值、附加值、前置值。
1. 我试图在 collectLatest
之后使用 println()
它没有打印任何东西。谁能解释一下为什么这不起作用。
2. 谁能指导我如何在流程中列出 add
、append
和 prepend
。
例如
附加
我的流量列表值为[1, 2, 3, 4, 5]
,想添加[6, 7, 8, 9, 10]
。
输出将是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
前置
在 append 之后 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
的相同列表。我想在列表中做 prepend 并且值为 [-5, -4, -3, -2, -1]
.
输出将是
[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我正在尝试,但我不明白为什么这个功能不起作用。
Main.kt
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collectLatest
suspend fun main(args: Array<String>) {
val flow = MutableStateFlow<List<Int>>(emptyList())
val updateList = listOf<Int>(-5, -4, -3, -2, -1)
for (i in 1..10) {
flow.value += i
}
flow.collectLatest {
println(it)
}
println("After Update")
flow.value = flow.value + updateList
flow.collectLatest {
println(it)
}
}
SharedFlow 或 StateFlow 没有结束,除非它被取消。在其上调用 collect
或 collectLatest
有点像创建一个 while(true)
循环。它永远不会完成迭代,因为它总是有可能发出另一个值。
在 the documentation 中,您可以在以“Shared flow never completes.”开头的部分阅读它。”。
嘿,我是 Kotlin Flow 的新手。我正在使用 MutableStateFlow 在流中添加值、附加值、前置值。
1. 我试图在 collectLatest
之后使用 println()
它没有打印任何东西。谁能解释一下为什么这不起作用。
2. 谁能指导我如何在流程中列出 add
、append
和 prepend
。
例如
附加
我的流量列表值为[1, 2, 3, 4, 5]
,想添加[6, 7, 8, 9, 10]
。
输出将是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
前置
在 append 之后 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
的相同列表。我想在列表中做 prepend 并且值为 [-5, -4, -3, -2, -1]
.
输出将是
[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我正在尝试,但我不明白为什么这个功能不起作用。
Main.kt
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collectLatest
suspend fun main(args: Array<String>) {
val flow = MutableStateFlow<List<Int>>(emptyList())
val updateList = listOf<Int>(-5, -4, -3, -2, -1)
for (i in 1..10) {
flow.value += i
}
flow.collectLatest {
println(it)
}
println("After Update")
flow.value = flow.value + updateList
flow.collectLatest {
println(it)
}
}
SharedFlow 或 StateFlow 没有结束,除非它被取消。在其上调用 collect
或 collectLatest
有点像创建一个 while(true)
循环。它永远不会完成迭代,因为它总是有可能发出另一个值。
在 the documentation 中,您可以在以“Shared flow never completes.”开头的部分阅读它。”。