Je me demande comment utiliser le filtrage par types multiples. J'ai :
abstract class MyAbstract
case class MyFirst extends MyAbstract
case class MySecond extends MyAbstract
case class MyThird extends MyAbstract // shouldn't be matched and shouldn't call doSomething()
val x: MyAbstract = MyFirst
x match {
case a: MyFirst => doSomething()
case b: MySecond => doSomething()
case _ => doSomethingElse()
}
Donc j'aimerais écrire quelque chose comme :
x match {
case a @ (MyFirst | MySecond) => doSomething()
case _ => doSomethingElse()
}
J'ai vu une construction similaire dans un tutoriel, mais cela me donne une erreur :
pattern type is incompatible with expected type;
[error] found : object MyFirst
[error] required: MyAbstract
Existe-t-il un moyen de définir plusieurs types différents dans une clause de cas ? Je pense que cela rendrait le code plus joli. Comme si j'en avais 5, j'écrirais le même code 5 fois (en appelant doSomething()).
Merci d'avance !