trait Animal{
val weight: Int
val age: Int
}
trait CatType extends Animal
trait DogType extends Animal
case class Cat(weight: Int, age: Int) extends CatType
case class Dog(weight: Int, age: Int) extends DogType
case class Lion(weight: Int, age: Int) extends CatType
object Main extends App {
val animals = Seq(Lion(100, 12), Cat(11, 3)
, Dog(23, 6), Cat(24, 8), Dog(36, 7))
println(animals.filter{
case ct: CatType => ct.weight >= 20
case _ => false
}.mkString("\n"))
}