Me pregunto cómo puedo utilizar la coincidencia de patrones de varios tipos. Yo tengo:
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()
}
Entonces me gustaría escribir algo como:
x match {
case a @ (MyFirst | MySecond) => doSomething()
case _ => doSomethingElse()
}
Vi una construcción similar en algún tutorial, pero me da un error:
pattern type is incompatible with expected type;
[error] found : object MyFirst
[error] required: MyAbstract
Entonces, ¿hay alguna manera de definir algunos tipos diferentes en la cláusula on case? Creo que haría el código más bonito. Como si tuviera 5 de ellos, escribiré el mismo código 5 veces (llamando a doSomething ()).
¡Gracias por adelantado!
doSomething
casos, ¿por qué no coincidir con elcase a : MyAbstract
entonces ...?