为什么解构声明在表达时不能用?

时间:2018-01-18 16:17:17

标签: kotlin pattern-matching destructuring

这个问题可能应该是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机制还是破坏自身的问题?

1 个答案:

答案 0 :(得分:3)

有一张开放的功能票:

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

此外,Java将在不久的将来支持数据类和pattern matching可能对Kotlin版本的实现产生影响。