У меня есть черта и несколько классов дел, расширяющих эту черту.case classes return Продукт вместо фактического типа
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
?