@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block(this)
}
并具有如下功能:
fun getType() : String? {
val type = mContent.let {
if (!TextUtils.isEmpty(it) && it == "TYPE_1") {
return "TYPE_A" . //where it returns to, as the result of the let{}, or as return value to exit the fun getType()?
}
else {
return it
}
}
if (type == "TYPE_A") {
return getType_A()
}
return type
}
在let go{}中的块内返回,退出fun getType()
或只是从let{}
返回?
1条答案
按热度按时间8i9zcol21#
Kotlin中的规则是**一个普通的
return
从你代码中最近的封闭的fun
**返回。请参阅语言文档here。
如果有一个封闭的lambda,那么只有当lambda是内联的(i。e.传递给标记有
inline
关键字的函数);否则编译器会抱怨。如果需要的话,你可以用一个封闭的标签(例如:例如
return@myLabel
)或函数名(例如例如return@let
)。但是如果它不是限定的,你只需要寻找最近的用fun
定义的封闭函数。