如何在kotlin中打印流量大小

How to print size of flow in kotlin

嘿,我是 kotlin flow 的新手。我正在尝试打印流量大小。我们知道 listsize() 功能。 flow.

有类似的功能吗
val list = mutableListof(1,2,3)
println(list.size)

输出

2

我们如何在流中获取尺寸值?

dataMutableStateFlow.collectLatest { data ->
   ???
 }

谢谢

Flow 在任何时候都不知道它的大小,因为要发出的未来值数量未知。此外,流不会记录它们过去发出了多少值。

序列有同样的问题。对于 Flows 和 Sequences,你只能通过对它们做一些 terminal 来获得计数,一些遍历它们的东西。

获取 Flow 大小的唯一方法是执行一些遍历整个 Flow 的操作。例如,您可以在 Flow 上调用挂起函数 count() 来获取其大小。更复杂的方法是创建一个计数变量,然后在 collect 调用中增加计数。但是,计算流的排放量仅适用于有限的冷流。热流(SharedFlow和StateFlow)永远是有限的,很多冷流也是无限的。