fun onYesClicked(view: View) {
launch(UI) {
val res = post(context!!,"deleteRepo")
if(res!=null){
fetchCatalog(context!!)
catalogActivityCatalog?.refresh()
}
}
}
以上代码运行正常。我想通过返回(从而停止执行)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”这里是否有关键字退出launch
块?
在这里可以使用替代返回的替代方法是什么?
答案 0 :(得分:5)
退货目的地必须使用return@...
fun onYesClicked(view: View) {
launch(UI) {
val res = post(context!!,"deleteRepo")
if(res==null)return@launch //return at launch
fetchCatalog(context!!)
catalogActivityCatalog?.refresh()
}
}
答案 1 :(得分:2)
您必须创建一个标签,在该标签上应用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
}
}
这是Kotlin从lambda返回的方式。