Kotin内置标准函数let的原理

  1. 标准let内置函数对泛型进行了let函数扩展,根据let函数源码,泛型的类型参数并未明确指定,因此所有类型任何地方都可以使用let函数;
  2. 所有类型.let{} 其实是一个匿名Lambda表达式,Lambda表达式的最后一行会被默认为返回值类型,因此最后一行是什么类型,let函数就返回什么类型;
  3. 源码:
// 函数有lambda表达式,高阶函数规范需要加 inline
//  T.let, T代表要为任何类型扩展出一个函数名let的函数,R代表Lambda表达式最后一行返回的数据
// 
@kotlin.internal.InlineOnly
public inline fun  T.let(block: (T) -> R): R {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    return block(this)
}

你可能感兴趣的:(Kotin内置标准函数let的原理)