Koltln标准库中有几个反方法很容易搞混,对初学者很难理解。他们分别是let,apply,with,run方法。熟练的使用他们可以让我们的代码更加优雅和可读
let方法
我用的Kotlin的标准库的版本是1.1.2-4,看看let方法的定义
/**
* Calls the specified function [block] with `this` value as its argument and returns its result.
*/
@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R = block(this)
我来分析下这个let方法的定义(个人观点,不对请雅正)
首先,这个let方法是一个扩展方法。是谁的扩展方法呢?是类型T的扩展方法。这些方法的定义都用到了泛型。所以我们写let方法的时候是这样写的:类实例+点+let。
其次,这个let方法接收一个参数,参数是个方法。这个方法的名字叫block。let接收的方法是一个穿入值是T类型返回值是R类型的方法。并且我们知道这个方法的反回值就是整个let方法的返回值。绕口,见谅。
最后,block(this)是整个let方法的定义,记住let方法是有返回值的。
Example:
val result ="Hello World".let {
println(this)
println(it)
520
}
println(result)
“Hello Wrold”就是我们let定义中的T。是一个