本文参考文章,作延展阅读:
1、【Kotlin篇】差异化分析,let,run,with,apply及also
对每个函数的作用做了详细讲解和列举了丰富示例,值得一读
2、巧用Kotlin:内置函数let、also、with、run、apply大大提高你的开发效率!
通过表格对比了不同函数的区别,行文简单,可以说简单直观是这篇文章最大的优点
函数名 | 作用 | 备注 |
---|---|---|
let | 1、作用域中通过 it 引用对象2、返回值为最后一行或return |
若最后一行为非赋值语句才会返回,否则返回Unit。 |
also | 1、作用域中通过 it 引用对象2、返回值为调用对象本身 |
|
with | 1、作用域中通过 this 引用对象2、返回值为最后一行或return |
该函数不是拓展函数,需要传入对象,因此要求对象不为null,所以能对对象进行判空处理。 |
run | 1、作用域中通过 this 引用对象2、返回值为最后一行或return |
若最后一行为非赋值语句才会返回,否则返回Unit。 |
apply | 1、作用域中通过 this 引用对象2、返回值为调用对象本身 |
除了 with
函数外,其他函数都可以很方便的先调用对象先进行判空处理,如下所示:
object?.fun{}
run
和 apply
函数与 with
函数的作用相近,都可以在作用域中通过 this
引用对象,排除返回值的不同,它们最大的区别在于 run
和 apply
方便在调用函数前先对对象进行判空操作。