两个 this 一起用?Kotlin 的成员扩展函数和 implicit receiver

视频先行

下面是视频内容的脚本文案原稿分享。

419387abeda92fd2378503a642a0dd97.jpeg

开场

大家好,我是扔物线朱凯。

今天咱说说 Kotlin 的 implicit receiver。这是一个我们写 Kotlin 经常会用的东西,虽然你可能都没听过这个词,但你一定用过它。Kotlin 的很多高级功能,都利用到了这个概念——比如协程,协程是重度依赖它的,非常重。所以,弄明白它是个什么、怎么用、怎么去发挥它最大的价值,对我们的能力提升是非常有帮助的。

定义:其实就是 this

我们从它的定义说起。它的名字 implicit receiver,直接翻译到中文的话,叫隐式的接收器或者说接收者。啥叫「接收」啊?所谓的接收,其实指的就是接收调用,或者说接受调用。接受函数的调用啊,接受属性的访问啊。比如这个 user.name

user.name

左边的 user 就是它的 receiver。谁的 receiver?对于 name 的访问的 receiver。

而 implicit receiver,隐式的 receiver,指的就是不用写也自动存在的 receiver。也就是如果我把这个 user. 给删了,它依然能取到某个 User 对象的 name

name

那么这个隐式地被应用的 User 对象,就是对这个 name 的访问的 implicit receiver,隐式的 receiver。

这就是 implicit receiver 的定义。

不过,咱把脑子转个弯想一下,这其实就是啥?就是 this 呗?对吧?

所谓的 implicit receiver,其实就是指的这个 this

但 Java 里却没有隐式 receiver 这个概念,这是在 Kotlin 才增加了的概念。为啥呢?因为 Java 里的 this 很简单,就叫 this 就行了,不需要额外的专用名字;而 Kotlin 对它进行了一些关键的拓展,在拓展的同时,为了方便描述和沟通,就也给它起了专属的名字:implicit receiver。

那么它做了什么关键拓展呢?咱来从它的基本特性说起。

嵌套的 implicit receiver

this,或者说隐式的 receiver,是可以嵌套的,比如在 Java 里我们可以这么写:

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值