为什么解构声明不能用在expression式中?

大概这个问题应该是Kotlin的作者,但是我确信在这个问题上有许多Kotlin用户对它的架构有深刻的了解。

所以我的问题是:为什么语言在expression式时不支持解构 ?

例如,我想要有以下代码:

data class Person(val name: String, val age: Int) when (person) { ("John", _) -> print("It is John") //it won't compile else -> print("It's not John") } 

由于解构使用了component1, component2, etc.方法,所以我很好奇为什么这个简单的值比较不能像上面那样使用。 在修改机制或者破坏自身的when是否存在问题?

有一个公开的function票:

KT-20004 : 当语句中的类似Scala的构造函数模式匹配

此外,Java将在不久的将来支持数据类和模式匹配 ,这可能会对Kotlin的实现提供指示。 但这只是一个假设

Interesting Posts