为什么不能在 when 表达式中使用解构声明?

Jak*_*ski 4 pattern-matching destructuring kotlin

可能这个问题应该由 Kotlin 的作者提出,但我确信在 SO 上有许多 Kotlin 用户对其架构有深入的了解。

所以我的问题是:为什么语言不支持解构时候表情?

例如,我想要以下代码:

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")
}
Run Code Online (Sandbox Code Playgroud)

由于解构使用的component1, component2, etc.方法,我很好奇为什么不能如上所示使用这种简单的值比较。是when机制修改的问题还是破坏本身的问题?

s1m*_*nw1 5

有一个开放的功能票:

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

此外,Java 将在不久的将来支持数据类和模式匹配,这可能会对 Kotlin 版本的实现产生影响。