这个问题可能应该是Kotlin的作者,但是我确信在那里有很多Kotlin用户对它的架构有深入的了解。
所以我的问题是:为什么该语言不支持destructuring表达式中的when?
例如,我想要以下代码:
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
机制还是破坏自身的问题?
答案 0 :(得分:3)
有一张开放的功能票:
KT-20004: when语句中类似Scala的构造函数模式匹配
此外,Java将在不久的将来支持数据类和pattern matching,可能对Kotlin版本的实现产生影响。