scala编程 - 样例类

        样例类在scala中是第一种特殊的类,可用于模式匹配(但在基于版本2.11.8测试中普通的类也能进行模式匹配),case class是多例的,后面需要加参数(无参也要加上括号),case object 是单例的。

import scala.util.Random

abstract class Animal extends flyable {
  def print {
    printf("This is %s .\n" ,this.getClass.getSimpleName())
  }
}

trait flyable {
  var flyable: Boolean = false
}

/**
  *在Scala中样例类是一中特殊的类,可用于模式匹配。
  * case class是多例的,后面要跟构造参数,case object是单例的
  */
case object Cat extends Animal
case class Dog() extends Animal
case class Bird() extends Animal {
  flyable = true
}

object CaseClass extends App {
  val animalArr = Array[Animal](Cat, new Dog, new Bird)
  val animal = animalArr(Random.nextInt(animalArr.length))

  animal match {
    case Cat =>
      Cat.print
    case dog: Dog =>
      dog.print
    //case bird: Bird =>
    // 模式匹配中还可以加入条件。
    case animal: Animal if (animal.flyable) =>
      animal.print
    case _ =>
      println("Nothing....")
  }
}

【来自@若泽大数据】

猜你喜欢

转载自blog.csdn.net/qq_26369213/article/details/79343099
今日推荐