gpt4 book ai didi

kotlin - 是什么让 Iterable.map 与挂起函数一起工作?

转载 作者:行者123 更新时间:2023-12-04 19:26:06 24 4
gpt4 key购买 nike

一般情况下,suspend fun s 不能代替普通 fun s。如果您尝试调用 suspend fun直接来自普通 fun ,你会得到一个编译时错误。

This blog post提到您可以通过编写在 Kotlin 中进行并发映射

list.map { async { f(it) } }.map { it.await() }

为什么第二个 map编译?你一般不能通过 suspend fun代替 fun .是吗
  • mapinline fun并且暂停自动推断为“上游”
  • map被 Kotlin 以某种方式特殊处理
  • 别的东西?
  • 最佳答案

    that map is an inline fun and that the suspension is automatically inferred "upstream"



    是的。内联后检查挂起函数。我在文档中看不到明确提及这一点,但在 Coroutines KEEP 中有一个:

    Note: Suspending lambdas may invoke suspending functions in all places of their code where a non-local return statement from this lambda is allowed. That is, suspending function calls inside inline lambdas like apply{} block are allowed, but not in the noinline nor in crossinline inner lambda expressions. A suspension is treated as a special kind of non-local control transfer.

    关于kotlin - 是什么让 Iterable.map 与挂起函数一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693975/

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