scala 基础十四 scala case class 的使用

1.当一个类被声明为case class时,编译器会自动进行如下操作:

.构造器中参数如果没有被声明为var,则默认为val类型;

.自动创建伴生对象,同时在伴生对象中实现apply方法,这样在使用时就不用显式地使用new对象;

.伴生对象中同样可以实现unapply(),从而可以将case class应用于模式匹配;

package smart.iot


abstract class Persons(name:String)

//构造器中参数如果没有被声明为var,则默认为val类型
case class Student(name:String,age:Int,stuentNo:Int) extends Persons(name)

case class Teacher(name:String,age:Int,teacherNo:Int) extends Persons(name)

case class Nobody(name:String) extends Persons(name)


object CaseClass
{
  def main(args: Array[String]): Unit = {
    
    //case class 会自动生成apply方法,从而省去了new
    var p:Persons=Student("james",20,1)
    
    p match{
      case p:Student=>println("class is a student")
      case p:Teacher=>println("class is a teacher")
      case p:Nobody=>println("class is nobody")
    }
    
  }
}

 2. Map 中的case class 使用

package smart.iot

class mapCase {
  
}

object mapCase
{
  def main(args: Array[String]): Unit = {
    
    var map=Map(1->2)
    
    map.get(1) match
    {
      //map 的key是Some类型的 
      case Some(_)=>println("kes is exists")
      //如果key不存在会返回None值
      case None =>println("kes is None")
      case _=>println("other")
    }
  }
}

 

posted @ 2017-07-04 14:20  jialiming  阅读(3626)  评论(0编辑  收藏  举报