Scala - pattern-matching d'un n-uplet de types

J'ai la classe suivante hiérarchie:

class A
class B extends A
class C extends A

puis, il y a une autre classe qui prend des instances de ces classes et il y a une méthode, dans lequel les deux cas de pattern-matching sont possibles comme ceci:

class D (one: A, two: A) {

  def work {
    (one, two) match {
      case (o, t): (B, B) => ... blablabla
      case (o, t): (B, C) => ... blablabla
      case _ =>
    }
  }
}

Cependant, lorsqu'il doit résoudre la mise en correspondance en faveur du second cas (B, C), il essaie de le résoudre comme (B, B) et vient à la classe de fonte sauf que C cannot be cast to B. Pourquoi? Que faire? Comment puis-je contourner cela?

InformationsquelleAutor noncom | 2012-08-16