欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

scala编程 - 样例类

程序员文章站 2022-06-14 17:09:37
...

        样例类在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....")
  }
}

【来自@若泽大数据】