Kotlin,从里面返回的地方放开

mgdq6dx1  于 2023-05-01  发布在  Kotlin
关注(0)|答案(1)|浏览(97)
@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{}返回?

8i9zcol2

8i9zcol21#

Kotlin中的规则是**一个普通的return从你代码中最近的封闭的fun**返回。
请参阅语言文档here
如果有一个封闭的lambda,那么只有当lambda是内联的(i。e.传递给标记有inline关键字的函数);否则编译器会抱怨。
如果需要的话,你可以用一个封闭的标签(例如:例如return@myLabel)或函数名(例如例如return@let)。但是如果它不是限定的,你只需要寻找最近的用fun定义的封闭函数。

相关问题