@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
}
放行{}中的块内返回,退出fun getType()
还是仅从let{}
返回?
答案 0 :(得分:2)
科特林的规则是平原return
从最近的fun
返回。
请参阅文档here。
如果有一个封闭的lambda,则只有在lambda是内联的(即传递给标有inline
关键字的函数)时才有可能;否则编译器会抱怨。
您可以根据需要更改此值,方法是使用一个封闭的标签(例如return@myLabel
)或函数名称(例如return@let
)来限定返回值。但是,如果不合格,则只需查找用fun
定义的最近的封闭函数。