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

熟悉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并不是那么好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值