0

トレイトと、このトレイトを拡張するいくつかのケース クラスがあります。

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戻ることができますか?

4

1 に答える 1