在下面的代码中,我想显示我的空视图,如果trip是空的然后返回并避免运行下面的代码,但编译器说"这里不允许返回".
mainRepo.fetchUpcomingTrips { trips ->
if (trips.isEmpty()) {
showEmptyViews()
return
}
// run some code if it's not empty
}
Run Code Online (Sandbox Code Playgroud)
有没有办法像这样回来?
我知道我可以把它放在一个if else块中,但是我讨厌写别的,当我有更多的条件时,我认为它不太可理解/可读.
hot*_*key 48
只需使用限定的返回语法:return@fetchUpcomingTrips.
在科特林,return拉姆达内部是指从最里面的嵌套的返回fun(忽略lambda表达式),并且它不以未允许lambda表达式内联.
该return@label语法用于指定范围从返回.您可以使用lambda传递给(fetchUpcomingTrips)的函数的名称作为标签:
mainRepo.fetchUpcomingTrips { trips ->
if (trips.isEmpty()) {
showEmptyViews()
return@fetchUpcomingTrips
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
有关:
Plainreturn建议您从函数中返回。由于您无法从 lambda 内的函数返回,因此编译器会抱怨。相反,您想从 lambda 返回,并且必须使用标签:
mainRepo.fetchUpcomingTrips { trips ->
if (trips.isEmpty()) {
showEmptyViews()
return@fetchUpcomingTrips
}
//run some code if it's not empty
}
Run Code Online (Sandbox Code Playgroud)