Kotlin-this

为了表示当前函数的接收者(receiver), 们使用this表达式:

  • 在类的成员函数中,this指向这个类的当前对象实例;
  • 在扩展函数中,或带接收者的函数字面值(function literal) 中, this 代表调用函数时, 在点号左侧传递的接收者参数;

如果this没有限定符,那么它指向包含当前代码的最内层范围.如果想要指向其他范围内的this,需要使用标签限定符。

带限定符的this

为了访问更外层范围(比如 类, 或 扩展函数, 或有标签的 带接受者的函数字面值)内的 this, 我们使用this@label , 其中的 @label 是一个标签, 代表我们想要访问的this所属的范围:

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 表达式没有接受者
                val d1 = this
            }
        }
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: “kotlin-android-extensions” Gradle插件已经被弃用。请使用此迁移指南(https://goo.gle/kotlin-android-extensions-deprecation)开始使用视图绑定(https://developer.android.com/topic/libraries/view-binding)和“kotlin-parcelize”插件。 ### 回答2: 在 Android 开发中,我们通常使用 Kotlin 语言来编写应用程序。Kotlin-Android-Extensions 是一款使用 IntelliJ IDEA 来扩展 Android `View` 类型的插件,这种扩展可以让开发人员更加方便地使用 `View` 类型的属性和方法。 然而,Kotlin-Android-Extensions 插件在开发过程中存在一些问题。其中最大的问题是,它使用运行时反射机制来创建 `View` 对象,这不仅会影响应用程序的运行效果,还可能导致性能问题。为了解决这些问题,Google 官方发布了一个新的插件 —— View Binding。 View Binding 是一种类型安全、高效的方法,可替代 Kotlin-Android-Extensions 插件。使用 View Binding,您可以在编译时生成与布局文件中的每个视图对应的绑定类。这意味着您可以避免因视图引用而引起的错误,同时加快应用程序的启动速度和执行效率。 另一个插件是 Kotlin-Parcelize 插件,它可以轻松序列化和反序列化封装类。这个插件可以将您的数据类自动转换为可序列化类型,并且可以自动生成序列化方法。 所以,如果您正在使用 Kotlin-Android-Extensions,那么现在已经过时了,您应该迁移到 View Binding 和 Kotlin-Parcelize 插件上。使用迁移指南可以快速开发,同时获得更好的性能和可靠性。 ### 回答3: 'kotlin-android-extensions' gradle插件已经被弃用,因此我们需要改用新的View Binding插件(https://developer.android.com/topic/libraries/view-binding)并使用'kotlin-parcelize'插件。这个改动对于那些使用Kotlin编写Android应用程序的开发者来说是一个重大的改动,因为在过去,它可以使得我们快速而轻松地在代码中使用UI控件,而不需要通过任何findViewByID方法。 现在,当我们使用View Binding插件时,我们可以更加安全和可靠地与我们的UI组件进行交互,并且我们不需要担心类型转换和编译时的错误。 当我们将我们的应用程序从'kotlin-android-extensions'转移到View Binding插件时,我们需要使用迁移指南(https://goo.gle/kotlin-android-extensions-deprecation)并下载最新的Android插件和Kotlin插件版本。我们需要为每个布局文件生成一个绑定类,并使用findViewById方法的方式取代View Binding中的方法。 Kotlin Parcelize插件是另一个开发者应该使用的插件,它为我们提供了一个方便且易于使用的方式将我们的Kotlin类序列化和反序列化。这对于使用Kotlin的开发者来说是一个非常有用的功能,而'kotlin-android-extensions'插件则没有这样的功能。 因此,虽然我们需要花费一些额外的时间来迁移到View Binding和Kotlin Parcelize插件,但这样做是值得的,因为它可以使我们的代码更加可靠和类型安全,从而使得我们可以更容易地维护和更新我们的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值