kotlin中标准函数let、run、with、apply、also的区别【转载】
kotlin中,let、run、with、apply、also这几个标准函数使用起来非常方便,合理使用可以很大程度上的简化代码,但是这几个标准函数用法和功能相似,初学kotlin时,很容易会不知道该选哪一个,其实看下源码并熟悉kotlin的高阶函数就很容易理解了。这几个标准函数的源码如下,新版本里面加入了一些别的代码,不过不影响这里的说明。
注:为了方便描述,以下的a.*的a代表一个对象a;下文中提到的等价只是功能上相同,用法上几乎相同,但在特殊情况下使用起来是会有细微的区别的,比如说a可能为空的时候。
以下四个标准函数,都是返回高阶函数的返回值
run{}与a.run{}的区别:run{}里面的高阶函数是运行在当前作用域内,a.run{}里面的高阶函数是运行在对象a的作用域内
a.run{}与a.let{}的区别:a.run{}里面的高阶函数是运行在对象a的作用域内,可以用this关键字(大部分情况下可省略)指代对象a,a.let{}是把对象a作为参数传到高阶函数里面,需要用it来指代对象a
with(a){} 等价于 a.run{}
publicinlinefun
publicinlinefun
publicinlinefun
publicinlinefun
以下两个标准函数,都是返回调用对象本身
a.apply{}与a.also{}是等效的,它们的区别类似run函数和let函数的区别
publicinlinefun
publicinlinefun
或者可以这样更直观的来理解
a.run{ 通过this关键字(大部分情况下可省略)来使用对象a }返回值为{}中的返回值
run{} 等价于 this.run{}返回值为{}中的返回值
a.let{ 通过it来使用对象a }返回值为{}中的返回值
with(a){ 通过this关键字(大部分情况下可省略)来使用对象a }返回值为{}中的返回值
a.apply{ 通过this关键字(大部分情况下可省略)来使用对象a }返回值是对象a
a.also{ 通过it来使用对象a }返回值是对象a
【kotlin中标准函数let、run、with、apply、also的区别【转载】】转载自:https://blog.csdn.net/feiying066/article/details/107065676/
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理