Man*_*ath 5 android keyword backticks kotlin data-class
这是我使用 Kotlin 数据类创建器插件创建的数据类。
data class ResponseHealthInisghts(
val `data`: List<Data>,
val message: String,
val statusCode: Int
)
Run Code Online (Sandbox Code Playgroud)
即使我删除了反引号,这段代码也能工作,我想知道它是否是为了 Java 互操作性。但是这个变量不是关键字,但它也有反引号。为什么?基于为什么这个 Kotlin 方法有封闭的反引号?
这个问题is
是 Java 和 Kotlin 的关键字,但data不是。
您可以简单地使用反引号来括起类、方法或变量名称
例如,如果有空格,它很有用:
class `Final Frontier` {
fun `out of space`() {
val `first second`: String?
}
}
Run Code Online (Sandbox Code Playgroud)
或者正如您提到的,如果使用Kotlin 关键字
如果 Java 库的方法使用 Kotlin 关键字
Run Code Online (Sandbox Code Playgroud)foo.`is`(bar)
data
是一个修饰关键字
data 指示编译器为类生成规范成员 以下标记充当声明修饰符列表中的关键字,并且可以在其他上下文中用作标识符
而不是不能用作标识符的硬关键字
以下标记始终被解释为关键字,不能用作标识符
基于这个问题的答案为什么这个 Kotlin 方法有反引号? 以及@forpas 和@marstran 的评论我能够理解我的问题。
该is
关键字是硬关键字
硬关键字 始终被解释为关键字,不能用作标识符:
因此,在互操作性之前,我们需要使用反引号,因为 Java 和 Kotlin 都有is
关键字。
其中data
关键字仅适用于Kotlin
并且也属于该类别
软关键字 在适用时在上下文中充当关键字,并且可以在其他上下文中用作标识符。
所以我们可以使用带或不带反引号的它。
另外,作为附加说明,您可以使用 bacticks 来自定义您的标识符
var `data is simple` : List<String>
Run Code Online (Sandbox Code Playgroud)
如果显示 lint 错误,请使用
“文件|设置|编辑器|检查|非法Android标识符”并禁用此检查。
归档时间: |
|
查看次数: |
443 次 |
最近记录: |