Почему переменные не разрешены в альтернативных шаблонах?

Часто у вас есть «симметричные» совпадения и вы хотите написать что-то вроде:

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")
}

Так почему у нас есть это ограничение?

16
задан Landei 3 July 2011 в 08:20
поделиться