Kotlin的解构声明有什么意义?

G. *_*Kh. 3 kotlin

对社区提出了一个问题.我现在学习Kotlin,并且刚刚遇到了称为解构声明的概念 - 当你可以立即从函数返回多个值时.这似乎很方便,但同时它看起来像一个棘手的解决方法.每当我想到Java中的这个特性时,我都明白它是我体系结构中的一个漏洞 - 那么应该有一个类,而不仅仅是几个变量!你们有什么感想?

hot*_*key 6

该概念允许具有清楚地识别其一些主要属性(组件)的类.

然后,您可以使用解构声明来访问这些组件,而不会出现访问属性的语法噪音.

相比:

 val point = clickEvent.getPointOnScreen()
 val x = point.xCoordinate
 val y = point.yCoordinate
 // Use `x` and `y` in some calculations
Run Code Online (Sandbox Code Playgroud)

并且,假设该类型具有component1component2,只是:

 val (x, y) = clickEvent.getPointOnScreen()
Run Code Online (Sandbox Code Playgroud)

基本上,没有必要使用这种语法糖,并且概念本身不会损害任何抽象,它只提供了在某些情况下在不需要实例时访问类实例属性的便捷方法本身.

另一个例子是使用地图条目,例如:

for ((key, value) in myMap) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

解构Map.Entry<K, V>后面仍然存在(key, value),您可以替换它for (entry in myMap) ...,但通常它是您需要的两个属性.这就是解构可以让你从一点点语法噪音中解脱出来的地方.