使用通配符对多个值进行模式匹配

Lit*_*per 2 kotlin

在Kotlin中,我们可以使用when模式对给定值进行匹配,例如,

when(value) {
    1 -> "One"
    2, 3 -> "Two or three"
    else -> "The rest"
}
Run Code Online (Sandbox Code Playgroud)

通过将两个值嵌套在中,我们还可以同时对多个值进行模式匹配Pair

when(Pair(value1, value2)) {
    (1, "One") -> "One"
    (2, "Two"), (3, "Three") -> "Two or three"
    else -> "The rest"
}
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何使用通配符同时对多个值进行模式匹配。我尝试了以下两种方法,但均未成功:

when(Pair(value1, value2)) {
    (1, _), (_, "One") -> "One"
    (2, _), (_, "Two"), (3, _), (_, "Three") -> "Two or three"
    else -> "The rest"
}
Run Code Online (Sandbox Code Playgroud)

when(Pair(value1, value2)) {
    (1, else), (else, "One") -> "One"
    (2, else), (else, "Two"), (3, else), (else, "Three") -> "Two or three"
    else -> "The rest"
}
Run Code Online (Sandbox Code Playgroud)

如何匹配任一变量的大小写?

Nyu*_*bis 5

Kotlin不具备其他语言可能会提供的模式匹配功能。请参阅此处以获取有关功能的讨论:https : //discuss.kotlinlang.org/t/destructuring-in-when/2391/18

您的用例不受的支持when