Kotlin/本机错误:入口点不能是挂起函数

disho6za  于 2022-12-23  发布在  Kotlin
关注(0)|答案(1)|浏览(94)

当我在Kotlin/JVM项目中使用Kotlin协程时,我可以将suspend关键字添加到程序的主条目中。

import kotlinx.coroutines.*

suspend fun main() {
  doWorld()
}

suspend fun doWorld() = coroutineScope {
  launch {
    delay(1000L)
    println("World!")
  }
  println("Hello")
}

Run example in Kotlin Playground
然而,当我在KotlinNative项目中使用相同的代码时,我在运行时得到一个错误

e: Entry point can not be a suspend function.

我发现a YouTrack issue请求Kotlin Native中的suspend fun main()支持。
在该特性可用之前,Kotlin Native中suspend fun main()的等效项是什么?
我在用

  • Kotlin/原生版本1.7.22
  • Kotlinx协同程序1.6.4
mcvgt66p

mcvgt66p1#

试试这个代码...

import kotlinx.coroutines.*

fun main() {
    runBlocking {
        doWorld()
    }
}

suspend fun doWorld() = coroutineScope {
    launch {
        delay(1000L)
        println("World!")
    }
    println("Hello")
}

你需要从其他协程中调用doWorld()方法,或者必须使suspend函数。目的是将任何线程更改为主线程。

相关问题