Kotlin编码窍门之this表达式(This Expression)

为了表示当前接收者,我们使用this表达式:

  1. 在类的成员中,this指的是当前类的对象
  2. 在扩展函数或具有接收者的函数字面值,this指的是.操作符左侧的接收者参数

如果this没有修饰符,它归属于最内层封闭作用域。为了让this归属于其他作用域,可以使用标签修饰符:

被修饰的this(Qualified this)

为了在外部作用域(类,扩展函数,或被标签的带有接收者的字面函数)访问this,我们使用this@label@label是一个代指this来源的标签:

class A { // implicit label @A
    inner class B { // implicit label @B
        fun Int.foo() { // implicit label @foo
            val a = this@A // A's this
            val b = this@B // B's this

            val c = this // foo()'s receiver, an Int
            val c1 = this@foo // foo()'s receiver, an Int

            val funLit = lambda@ fun String.() {
                val d = this // funLit's receiver
            }


            val funLit2 = { s: String ->
                // foo()'s receiver, since enclosing lambda expression
                // doesn't have any receiver
                val d1 = this
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,282评论 9 118
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 秃鹫在上空盘旋 悬崖在一步之远 鬼魅如影相随 腐朽随处可闻 我掉进一个梦境的底端 拼命地想要爬出去 有许许多多无形...
    古月人青阅读 129评论 0 0
  • /bin、/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。 /boot:放置...
    子丿龙阅读 885评论 0 1
  • 2017-5-5学经汇报: 一、学经日期:2017年5月5日 农历四月初十 晴 星期五 宝贝年龄:5周岁6个...
    b0a4ca4b06a4阅读 341评论 1 0