您的位置:首页 > 其它

Destructuring Declarations in kotlin (kotlin的解构声明) 的正确打开方式

2018-01-11 22:09 411 查看
熟悉JS的读者朋友们知道,ES6有一个非常好用的特性,解构析值。 这个特性可以帮助我们实现如下简洁的代码:

const {a, b} = {a:"Alice", b:"Bob"}


简单地说,就是拆解一个对象。

我在写kotlin的时候想:kotliin有没有类似的特性呢?

kotlin有一个类似的,但是不是非常好用的特性:Destructuring Declarations

我觉得这部分的文档写得不是很好。我查了相关的中文资料才明白怎么用。

如果解构的是一个
data class
实例的话,是很简单的。

data class Person(val x: Int = 1, val y: Int = 2)

val (x, y) = Person()//解构声明
println("x=$x, y=$y")


为什么要使用data class呢?

因为文档里写了:

Since data classes automatically declare componentN() functions, destructuring declarations work here.

所有的data class自动声明了
componentN()


如果是一般的class,那么我们需要手动加上
componentN()
函数。

class Object(val x: Int = 1, val y: Int = 2) {
operator fun component1() = this.x
operator fun component2() = this.x
}
val (x1,y1) = Object()
println("x1=$x1, y1=$y1")


如果需要我们额外加上componentN()函数,代码并不比
不使用解构
更简洁。

class Object(val x: Int = 1, val y: Int = 2) {}
val o = Object()
val x1 = Object().x
val y1 = Object().y
println("x1=$x1, y1=$y1")


所以,除非针对data class, destructuring declarations并不是那么好用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: