gpt4 book ai didi

kotlin - 流量减少操作需要暂停功能

转载 作者:行者123 更新时间:2023-12-02 13:34:40 25 4
gpt4 key购买 nike

我不明白为什么Kotlin Flow会减少,折叠功能具有如下特征:

public suspend fun <S, T : S> Flow<T>.reduce(operation: suspend (accumulator: S, value: T) -> S): S

public suspend inline fun <T, R> Flow<T>.fold(
initial: R,
crossinline operation: suspend (acc: R, value: T) -> R): R

为什么 operation必须可挂起?流程本身是异步的,这很明显,但是还原操作很可能非常便宜。仅在发出下一个值时才应调用该操作。允许在 operation中挂起只是打开了一个蠕虫病毒 jar ,因为这两个函数都应该累积值,并且不会对它们进行大量的IO操作或长时间运行。

最佳答案

Why does operation have to be suspendable?

Allowing suspension inside operation just opens a can of worms


您的问题似乎将“必须”与“可能”混为一谈。该操作不必是可挂起的,但是Kotlin允许它挂起。根本没有考虑到它,并允许在此处像Flow API中的其他任何地方使用可挂起的函数。如果不允许的话,我敢肯定会有100倍多的用户问为什么在所有其他操作中 reduce降级为不可暂停的操作。
无论如何,正如您所说,“蠕虫 jar ”对我来说似乎并不危险。您所冒的风险只是性能,而您又冒着许多其他风险,例如通过编写阻塞代码而不是暂停代码。

关于kotlin - 流量减少操作需要暂停功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59528808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com