繁体   English   中英

如何在 kotlin 中打印流量大小

[英]How to print size of flow in kotlin

嘿,我是 kotlin流程的新手。 我正在尝试打印流量大小。 我们知道该列表具有size() function。 我们是否有类似的 function 用于flow

val list = mutableListof(1,2,3)
println(list.size)

output

2

我们如何在流量中获得大小值?

dataMutableStateFlow.collectLatest { data ->
   ???
 }

谢谢

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

序列有同样的问题。 对于 Flows 和 Sequences,您只能通过对它们执行一些终端操作来获得计数,即迭代所有这些操作。

获得 Flow 大小的唯一方法是做一些遍历整个 Flow 的事情。 例如,您可以在 Flow 上调用暂停 function count()以获取其大小。 更复杂的方法是创建一个计数变量,然后在collect调用中增加计数。 但是,计算流量的排放量仅适用于有限的冷流量。 热流(SharedFlow 和 StateFlow)永远不是有限的,许多冷流也是无限的。

如何转换流量<list<object> &gt; 流动<object> Kotlin协程?<div id="text_translate"><p> 给定一个包含来自WebClient请求的ObjectA List的ObjectB 。 我想从ObjectB返回我的DTO流</p><pre class="lang-kotlin prettyprint-override">data class MyDto(val id: String, val name: String) { companion object { fun from(objectB: ObjectB) { return MyDto(id = objectB.id, name = objectB.name) } }... return webClient.get().uri(baseUrl).accept(MediaType.APPLICATION_JSON).retrieve().bodyToFlow&lt;ObjectA&gt;().flatMapConcat { response -&gt; val x = response.objectB.map { MyDto.from(it) } retrun@flatMapConcat flowOf(x) }</pre><p> 这将返回Array&lt;Array&lt;MyDto&gt;&gt;的 JSON</p><pre class="lang-json prettyprint-override"> [ [ { "id": 1, "name": "Joe" }, { "id": 2, "name": "Jane" } ] ]</pre><p> 预期结果是Flow&lt;MyDto&gt;</p><pre class="lang-json prettyprint-override"> [ { "id": 1, "name": "Joe" }, { "id": 2, "name": "Jane" } ]</pre> </div></object></list<object>

[英]How to convert Flow<List<Object>> to Flow<Object> Kotlin coroutine?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Kotlin 流程 - 如何处理取消 Kotlin:如何创建无的流程 如何手动更新一个kotlin流程 如何结合 livedata 和 kotlin 流 如何将 Kotlin 流程拆分为 2 个流程? 如何在 Kotlin 中合并流和通道? Kotlin流程:如何退订/停止 如何在Kotlin中打印ClosedRange 如何转换流量<list<object> &gt; 流动<object> Kotlin协程?<div id="text_translate"><p> 给定一个包含来自WebClient请求的ObjectA List的ObjectB 。 我想从ObjectB返回我的DTO流</p><pre class="lang-kotlin prettyprint-override">data class MyDto(val id: String, val name: String) { companion object { fun from(objectB: ObjectB) { return MyDto(id = objectB.id, name = objectB.name) } }... return webClient.get().uri(baseUrl).accept(MediaType.APPLICATION_JSON).retrieve().bodyToFlow&lt;ObjectA&gt;().flatMapConcat { response -&gt; val x = response.objectB.map { MyDto.from(it) } retrun@flatMapConcat flowOf(x) }</pre><p> 这将返回Array&lt;Array&lt;MyDto&gt;&gt;的 JSON</p><pre class="lang-json prettyprint-override"> [ [ { "id": 1, "name": "Joe" }, { "id": 2, "name": "Jane" } ] ]</pre><p> 预期结果是Flow&lt;MyDto&gt;</p><pre class="lang-json prettyprint-override"> [ { "id": 1, "name": "Joe" }, { "id": 2, "name": "Jane" } ]</pre> </div></object></list<object> 如何通过组合将 Kotlin 流事件发送到现有流 stream 中?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM