Часто у вас есть "симметричные" совпадения и вы хотите писать такие вещи, как:
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")
}
Итак, почему у нас есть это ограничение?