Destructuring Declarations in kotlin (kotlin的解构声明) 的正确打开方式
2018-01-11 22:09
411 查看
熟悉JS的读者朋友们知道,ES6有一个非常好用的特性,解构析值。 这个特性可以帮助我们实现如下简洁的代码:
简单地说,就是拆解一个对象。
我在写kotlin的时候想:kotliin有没有类似的特性呢?
kotlin有一个类似的,但是不是非常好用的特性:Destructuring Declarations
我觉得这部分的文档写得不是很好。我查了相关的中文资料才明白怎么用。
如果解构的是一个
为什么要使用data class呢?
因为文档里写了:
Since data classes automatically declare componentN() functions, destructuring declarations work here.
所有的data class自动声明了
如果是一般的class,那么我们需要手动加上
如果需要我们额外加上componentN()函数,代码并不比
所以,除非针对data class, destructuring declarations并不是那么好用。
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并不是那么好用。
相关文章推荐
- Android Dialog与软键盘的正确打开方式
- DependencyProperty.UnsetValue 的正确打开方式
- 看【js倒计时正确打开方式】笔记
- 【Eclipse的正确打开方式】从StarUML到GEF到AmaterasUML
- 不是你无法入门自然语言处理(NLP),而是你没找到正确的打开方式
- Dubbo的正确打开方式之基本接口定义及异常处理
- 不是你无法入门自然语言处理,而是你没找到正确的打开方式
- 从程序员小白到大神的正确打开方式!
- ubuntu 正确安装jdk后,eclipse从快捷方式打开找不到jvm
- SimpleSwitch的(正确?)打开方式
- 单例在ObjectiveC中的正确打开方式
- vue-cli + sass 的正确打开方式图文详解
- STL容器BitSet(位图)——1道腾讯笔试题的正确打开方式
- WeX5的正确打开方式(3)——绑定机制
- 用kotlin方式打开《第一行代码:Android》之开发酷欧天气(2)
- Android——Exception异常的正确打开方式
- Xcode 的正确打开方式——Debugging
- Xcode 的正确打开方式——Debugging(转载)
- python的多进程共享变量正确打开方式
- Linux系统学习窗口的正确打开方式