ababup1192
8/8/2016 - 11:00 AM

Animal.scala

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"))
}