Kotlin高级特性:解构、委托与DSL构建
1. 解构声明
解构声明允许我们一次性声明多个变量,并将它们初始化为对应数据类属性的值。通过运算符重载,我们可以为任意类型启用此功能。具体来说,只需定义一个无参数的成员或扩展函数 componentN() ,其中 N 是从1开始的数字。解构声明中由相应接收者类型的实例初始化的每个条目将被赋予具有相应索引的组件函数返回的值。
以下是一个示例,为 RationalRange 类定义组件函数:
operator fun RationalRange.component1() = from
operator fun RationalRange.component2() = to
fun main() {
val (from, to) = r(1, 3)..r(1, 2)
println(from) // 1/3
println(to) // 1/2
}
数据类的组件函数由编译器自动生成。Kotlin标准库也包含一些扩展组件函数,例如用于解构映射条目:
val map = mapOf("I" to 1, "V" to 5, "X" to 10)
for ((key, value) in map) {
println("$key = $value")
}
还可以提取列表或数组的前几个元素:
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



