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的主要内容,如果未能解决你的问题,请参考以下文章

解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段

java 反射代码片段

Xcode 快速开发 代码块 快捷键

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段

bootspring???????????????Date??????????????????????????????????????????????????????????????????(代码片段

从JVM的角度看JAVA代码--代码优化