kotlin中有一个数据类,例如
@Entity
data class Record(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
@Column(nullable = false, name = "name")
var name: String? = null
)
Run Code Online (Sandbox Code Playgroud)
我可以调用component1和component2函数来访问属性.但是,当我声明属性var时,我有getter和setter,如果我声明属性val,我有getter.在这种情况下,componentN函数是多余的,为什么我们需要它们,因为getter似乎更加不言自明?
Yoa*_*erg 18
Kotlin通过componentN函数支持以下语法:
val (name, age) = person
Run Code Online (Sandbox Code Playgroud)
此语法称为解构声明.解构声明一次创建多个变量.我们已经声明了两个新变量:名称和年龄.
解构声明编译为以下代码:
val name = person.component1()
val age = person.component2()
Run Code Online (Sandbox Code Playgroud)
component1()和component2()函数是Kotlin中广泛使用的约定原则的另一个例子(参见+和*,for-loops等运算符).只要可以在其上调用所需数量的组件函数,任何东西都可以在解构声明的右侧.当然,可以有component3()和component4()等等.
请注意,componentN()函数需要使用operator关键字标记,以允许在解构声明中使用它们.
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |