scala-case class

Posted 大数据与CV

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala-case class相关的知识,希望对你有一定的参考价值。


Case Class是一种常规类,case里的所有参数都是公共的,默认是不可变的,不使用new来实例化,能够被优化以用于模式匹配.



//定义一个样例类

object Case_class_demo{
def main(args: Array[String]): Unit = {
//定义一个样例类
case class Student(name:String)

val student1 = Student("Tim")

print(student1.name)

}
}


也可以在main之外定义


//定义一个样例类
case class Student(name:String)

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

val student1 = Student("Tim")

print(student1.name)

}
}




没有使用关键字new,这是因为案例类有一个默认的apply方法来负责对象的创建。




case class被用于模式匹配:


//定义一个样例类
case class Student(name:String)

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

val student1 = Student("Tim")

student1 match {
case Student(name:String)=> println("my name is Tim")
case _=>println("not found")
}

print(student1.name)

}
}


输出结果:my name is Tim



一个类一旦被定义为case class,编译器会自动生成该类的伴生对象,由于伴生对象中有apply和unapply方法,apply可以让我们不用new就可以创建对象,unapply则使得可以方便地应用到模式匹配中.


以上是关于scala-case class的主要内容,如果未能解决你的问题,请参考以下文章