为什么解构声明不能用在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的实现提供指示。 但这只是一个假设 。