Часто у вас есть "симметричные" совпадения и вы хотите написать что-то вроде:
def g(p:(Int,Int)) = p match {
case (10,n) | (n,10) => println(n)
case _ => println("nope")
}
Это недопустимо, но если каждая альтернатива имеет одинаковые переменные с те же типы , это не должно быть проблемой, так как это может быть переведено в отдельные случаи:
def g(p:(Int,Int)) = p match {
case (10,n) => println(n)
case (n,10) => println(n)
case _ => println("nope")
}
Так почему у нас есть это ограничение?