此处不允许 '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()
}
}
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@...
fun onYesClicked(view: View) {
launch(UI) {
val res = post(context!!,"deleteRepo")
if(res==null)return@launch //return at launch
fetchCatalog(context!!)
catalogActivityCatalog?.refresh()
}
}