gpt4 book ai didi

kotlin - 只能在协程体错误内调用挂起函数

转载 作者:行者123 更新时间:2023-12-02 12:49:51 28 4
gpt4 key购买 nike

所以,我对 kotlin 中的协程相当陌生,我不明白这里发生了什么。我确实有一个从另一个调用的挂起函数。
这里的正确语法是什么?

suspend fun doSomething(str: Optional<String>) {
// Error: Suspension functions can be called only within coroutine body
str.map { doSomethingElse() }
}

suspend fun doSomethingElse() { }
然而,这很好
suspend fun doSomething(str: Optional<String>) {
if (str.isPresent) {
doSomethingElse()
}
}

suspend fun doSomethingElse() {}

最佳答案

Optional.map()不是内联函数。传递的 lambda 是一个接口(interface),因此如果您尝试从该接口(interface)调用挂起函数,则不再是从协程调用它。
在这种情况下,您可以转换 Optional<String>到一个可以为空的 String?.orElse(null)如果结果为非空,则调用该函数。 Optional是 Java 的 null 安全解决方案,因为 Java 在语法/编译器级别不支持它。您不需要在 Kotlin 代码中使用它,除非它是从 Java 代码传递给您的。

关于kotlin - 只能在协程体错误内调用挂起函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63143681/

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