样本类

简单的来说,Scala的case class就是在普通的类定义前加case这个关键字,然后你可以对这些类来模式匹配。

case class带来的最大的好处是它们支持模式识别。

首先,回顾一下前面的模式匹配:

 var str  = "Tom"
    str match{
      case "Tom" =>println("hello Tom")
      case "Mary" =>println("hello Mary")
      case _ =>println("others")
    }

其次,如果我们想判断一个对象是否是某个类的对象,跟Java一样可以使用isInstanceOf ,使用case class 可以比较简单实现

/**
  * 样本类,实现模式匹配
  */

class Vehicle

case class Car(name:String) extends Vehicle
case class Bike(name:String) extends Vehicle

object CaseClass {
  def main(args: Array[String]): Unit = {

    var aCar : Vehicle = new Car("Tom's car")
    var bBike :Vehicle = new Bike("Andy' bike")
    aCar match{
      case Car(name) =>println("car:"+ name)
      case Bike(name) => println("bike:"+name)
      case _ => println("其他")
    }

    bBike match{
      case Car(name) =>println("car:"+ name)
      case Bike(name) => println("bike:"+name)
      case _ => println("其他")
    }

  }
}

运行结果:

car:Tom's car
bike:Andy' bike

你可能感兴趣的:(样本类)