トレイトと、このトレイトを拡張するいくつかのケース クラスがあります。
sealed trait Bird
case class Eagle(age: Int) extends Bird
case class Sparrow(price: Double) extends Bird
次のように、特性を型として返すことが期待される何かを行う場合
val result = "test" match {
case s:String if s startsWith "t" => Eagle(5)
case _ => Sparrow(2)
}
代わりにこのProduct
タイプを取得します。
> result: Product with Serializable with Bird = Eagle(5)
Product
私は、すべてのケースクラスが拡張するものであることを理解しています。しかし、私は何に対処すべきかわかりません。代わりProduct
に、どうすれば取得Bird
またはEagle
戻ることができますか?