複数のタイプのパターンマッチングをどのように使用できるのでしょうか。私は持っています:
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()
}
だから私は次のようなものを書きたいと思います:
x match {
case a @ (MyFirst | MySecond) => doSomething()
case _ => doSomethingElse()
}
いくつかのチュートリアルで同様の構造を見ましたが、エラーが発生します:
pattern type is incompatible with expected type;
[error] found : object MyFirst
[error] required: MyAbstract
では、case句でいくつかの異なる型を定義する方法はありますか?コードがもっときれいになると思います。それらを5つ持つかのように、同じコードを5回記述します(doSomething()を呼び出します)。
前もって感謝します!