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

【来自@若泽大数据】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值