kotlin - Kotlin 扩展函数是否隐式声明成员变量?
问题描述
我有一个数据类User
data class User(name: String?, email: String?)
我创建了一个扩展函数来获得最佳标识符(首先是名称,然后是电子邮件)
fun User.getBestIdentifier(): String {
return when {
!this.name.isNullOrBlank() -> this.name
!this.email.isNullOrBlank() -> this.email
else -> ""
}
但是我注意到在我的 IDE 中,如果我去掉所有的this
单词,它仍然可以编译和运行。像:
fun User.getBestIdentifier(): String {
return when {
!name.isNullOrBlank() -> name
!email.isNullOrBlank() -> email
else -> ""
}
我的结论是 Kotlin 扩展函数隐式支持成员变量,但我不确定。有没有人有任何关于这种现象的文档或解释它为什么/如何发生?
解决方案
推荐阅读
- javascript - 为什么这个全局变量不起作用?它可以完美地用作局部变量
- r - R根据分组计数结果将产品类型分配给用户
- javascript - 使用相同的 onClick 按钮将计数器递增到 2(范围 0-2),然后从 2 递减回 0
- sql - group by 子句或 partition 子句中的 case 语句
- kotlin - sourceSets with gradle kotlin DSL in Grade 4.10rc
- node.js - 异步和解析的问题
- c# - c#中udp中的线程中断
- c# - 如何从 UWP 获取 Windows 的用户友好版本名称,例如“Windows 10 Pro”
- apache-flink - 什么可能导致 Apache Flink 作业中的障碍对齐持续时间长?
- laravel - 在 laravel vue 中无法获得夏季笔记