Kotlin-this略有不同

本文介绍了Kotlin中`this`关键字的使用,特别是在作用域和标签引用上的特点。默认情况下,`this`指向最内层作用域。通过标签,可以引用其他作用域的`this`,在扩展函数和内部函数中有着独特的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

前言

在Kotlin中的this相对java略有不同,主要是多了label的使用。我们来看一下


作用域

在默认情况下

this指向 最内层的包含它的作用域

引用其他作用域中的 this

需要用到label标签,指向label所在的作用域

来看个范例
class A { // 隐式标签 @A
    inner class B { // 隐式标签 @B
        fun Int.foo() { // 隐式标签 @foo
            val a = this@A // A 的 this
            val b = this@B // B 的 this

            val c = this // foo() 的接收者,一个 Int
            val c1 = this@foo // foo() 的接收者,一个 Int

            val funLit = lambda@ fun String.() {
                val d = this // funLit 的接收者
            }
            
            val funLit2 = { s: String ->
                // foo() 的接收者,因为它包含的 lambda 表达式
                /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值