1 let
let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let函数另一个作用就是可以避免写一些判断null的操作。
代码段
object.let{
it.todo()//在函数体内使用it替代object对象去访问其公有的属性和方法
...
}
//另一种用途 判断object为null的操作
object?.let{//表示object不为null的条件下,才会去执行let函数体
it.todo()
}
2 with
它是将某对象作为函数的参数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定return表达式。
with(object){
1 可以直接访问属性
2 返回最后一行 或者直接return 返回
}
3 run
run函数实际上可以说是let和with两个函数的结合体,run函数只接收一个lambda函数为参数,以闭包形式返回,返回值为最后一行的值或者指定的return的表达式。
object?.run{
1 可以直接访问属性
2 可以通过加? 非空判断 来进行null判断
3 返回最后一行 或者return 返回
}
4 apply
object?.apply{
1 通过this 访问属性
2 返回对象本身
3 可以进行非空判断
}
5 also
object?.also{
1 通过it访问属性
2 返回对象本身
3 可以进行非空判断
}