Scala深入浅出实战经典:29,Case class和Case object代码实战解析
2015-07-29 23:25
651 查看
今天学习了王家林老师scala讲座的第29讲,case class和case object的应用实战。做下记录。
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于王家林老师的课程内容
王老师QQ:1740415547
微信号:18610086859
话不多说,让我们从代码出发:
abstract class People//定义抽象类
case class Student(age:Int) extends People//定义case class,继承抽象类
case class Worker(age:Int,salary:Double) extends People
case object Shared extends People//定义case object,继承抽象类
object testCassClass{
def main(args:Array[String]){
def caseOps(people:People)=people match{//定义caseOps方法,对输入参数people进行模式匹配
case Student(age)=>println("age:" + age)
case Worker(age,salary)=>println("age:" +age + "salary" + salary)
case Shared => println("nothing")
}
caseOps(Student(19))
caseOps(Shared)
val worker = Worker(20,15000.0)
val worker2 = worker.copy(salary=16000.0)//case class的消息传递功能
val worker3 = worker2.copy(age = 30)
}
}
case class和case object有两种功能,传递消息和模式匹配,我们经常在模式匹配中用到case class。
我们也可以用case class的消息传递功能从现有实例拷贝一个新的实例,并且在拷贝的同时可以定义与原实例不同的属性。
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于王家林老师的课程内容
王老师QQ:1740415547
微信号:18610086859
话不多说,让我们从代码出发:
abstract class People//定义抽象类
case class Student(age:Int) extends People//定义case class,继承抽象类
case class Worker(age:Int,salary:Double) extends People
case object Shared extends People//定义case object,继承抽象类
object testCassClass{
def main(args:Array[String]){
def caseOps(people:People)=people match{//定义caseOps方法,对输入参数people进行模式匹配
case Student(age)=>println("age:" + age)
case Worker(age,salary)=>println("age:" +age + "salary" + salary)
case Shared => println("nothing")
}
caseOps(Student(19))
caseOps(Shared)
val worker = Worker(20,15000.0)
val worker2 = worker.copy(salary=16000.0)//case class的消息传递功能
val worker3 = worker2.copy(age = 30)
}
}
case class和case object有两种功能,传递消息和模式匹配,我们经常在模式匹配中用到case class。
我们也可以用case class的消息传递功能从现有实例拷贝一个新的实例,并且在拷贝的同时可以定义与原实例不同的属性。
相关文章推荐
- Objective-C中.h文件、.m文件中@interface、@synthesize及其它
- java_src_object
- Object-c Associated Object
- *Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
- *Delphi容器类之---TList、TObjectList、TComponentList、TClassList
- Object Detection----- Discriminatively Trained Part Based Models
- [objective-c]推送警告处理
- HALCON算子函数——Chapter 13 : Object
- “LINK : fatal error L1093: start_test.obj : object file not found”报错解决
- [objective-c]编译出错 -- NS_REQUIRES_NIL_TERMINATION Error
- 黑马程序员--iOS--Objective-C基础 (面向对象)
- java Object类中常用的方法
- 2015 Objective-C 新特性
- ios coredata NSManagedObject 的 objectID
- 基于json-lib.jar包 创建JSONObject的四个常用方法
- Object-C 字符串
- JSONObject/JSONArray
- JAVA DAO(Data Access Object)的个人总结
- object入门(转)
- [objective-c]使用Lumberjack未定义