【发布时间】:2020-11-18 10:59:41
【问题描述】:
所以,我对 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() {}
【问题讨论】:
-
@Sergey 我认为 OP 理解这个问题的含义。这里的困惑在于为什么您似乎无法从此处的另一个挂起中调用挂起函数。这是因为 lambda 不是
inline。