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

有一个社区的问题。 我现在学习Kotlin,刚刚遇到了一个叫做解构声明的概念 – 当你可以一次返回一个函数的多个值。 这似乎很方便,但同时它看起来像一个棘手的解决方法。 每当我想到Java中的这个特性时,我都明白这是我的架构中的一个漏洞 – 那么应该有一个类,而不仅仅是一些variables! 你们有什么感想?

这个概念允许有一些类清楚地标识出它们的一些主要属性,即组件

然后你可以通过使用解构声明来访问这些组件,而不用访问属性的语法噪声。

比较:

val point = clickEvent.getPointOnScreen() val x = point.xCoordinate val y = point.yCoordinate // Use `x` and `y` in some calculations 

假设types有component1component2 ,只是:

  val (x, y) = clickEvent.getPointOnScreen() 

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

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

 for ((key, value) in myMap) { /* ... */ } 

(key, value)解构之后仍然有一个Map.Entry ,你可以用for (entry in myMap) ...来替换它,但通常它是你需要的两个属性。 这是解构可以使你避免一点句法噪音的地方。