此处不允许 'return':Kotlin Coroutine launch(UI) 块

'return' is not allowed here: Kotlin Coroutine launch(UI) block

fun onYesClicked(view: View) {

    launch(UI) {
        val res = post(context!!,"deleteRepo")

        if(res!=null){
            fetchCatalog(context!!)
            catalogActivityCatalog?.refresh()
        }
    }
}

以上代码运行良好。我想通过 returning(从而停止执行)if res == null 来避免 if 中的嵌套部分,就像这样,

fun onYesClicked(view: View) {

    launch(UI) {
        val res = post(context!!,"deleteRepo")

        if(res==null)return                  //this line changed <---A

        fetchCatalog(context!!)              //moved outside if block
        catalogActivityCatalog?.refresh()    //moved outside if block
    }
}

当我在 <--A

指示的行中使用 return 时,它说 'return' is not allowed here

这里有退出launch块的关键字吗? 在这里可以使用什么替代方法来代替 return?

您必须创建一个应用 return 语句的标签,例如 return@label:

fun onYesClicked(view: View) {

    label@launch(UI) {
        val res = post(context!!,"deleteRepo")

        if(res==null) return@label                   //this line changed <---A

        fetchCatalog(context!!)              //moved outside if block
        catalogActivityCatalog?.refresh()    //moved outside if block
    }
}

这是从 lambda 到 return 的 Kotlin 方法。

必须使用 return@...

指定 return 的目的地
fun onYesClicked(view: View) {

    launch(UI) {
        val res = post(context!!,"deleteRepo")

        if(res==null)return@launch     //return at launch

        fetchCatalog(context!!)              
        catalogActivityCatalog?.refresh()    
    }
}