大数据系列修炼-Scala课程74
2016-10-07 12:26
344 查看
大数据系列修炼-Scala课程74
核心内容:
1、从Spark源码的角度思考Scala中的模式匹配
1>case class 与 case object 常用于消息传递与模式匹配。
1>在声明case class的过程中,若在扩展的属性前面没有加修饰符var或者val,默认的修饰符为val,意味着在消息传递的
过程中属性是不可变的,因此特别适合消息传递。
2>当我们在声明case class的时候,case class的内部会有一个重要的实现:每个case class都会有伴生对象,里面有相应的
apply与unapply方法,其中apply方法用于对象的生成,unapply方法用于在模式匹配的时候进行消息的提取。
3>case class在进行模式匹配的时候,使用case class会暴露出所有的成员。
实例程序:
如有问题,欢迎留言指正!
核心内容:
1、从Spark源码的角度思考Scala中的模式匹配
1、从Spark源码的角度思考Scala中的模式匹配 |
1>在声明case class的过程中,若在扩展的属性前面没有加修饰符var或者val,默认的修饰符为val,意味着在消息传递的
过程中属性是不可变的,因此特别适合消息传递。
2>当我们在声明case class的时候,case class的内部会有一个重要的实现:每个case class都会有伴生对象,里面有相应的
apply与unapply方法,其中apply方法用于对象的生成,unapply方法用于在模式匹配的时候进行消息的提取。
3>case class在进行模式匹配的时候,使用case class会暴露出所有的成员。
实例程序:
trait S1 //在声明case class的时候,每个case class都会有内部的实现:相应的伴生对象case object case class Student(name:String,score:Double) extends S1 case class Worker(name:String,salary:Double) extends S1 case object A extends S1 object App1 { def main(args:Array[String]):Unit= { def fun(arg:S1) = arg match { case Student(name,score) => println(name+"\t"+score) case Worker(name,salary) => println(name+"\t"+salary) case A => println("伴生对象") case _ => println("Nothing!") } val aa:Student = Student.apply("Spark",88.8) val bb:Worker = Worker("Scala",2000.0) val cc:A.type = A fun(aa) fun(bb) fun(cc) } }
如有问题,欢迎留言指正!
相关文章推荐
- 大数据系列修炼-Scala课程20
- 大数据系列修炼-Scala课程08
- 大数据系列修炼-Scala课程38
- 大数据系列修炼-Scala课程01
- 大数据系列修炼-Scala课程84
- 大数据系列修炼-Scala课程87
- 大数据系列修炼-Scala课程88
- 大数据系列修炼-Scala课程05
- 大数据系列修炼-Scala课程33
- 大数据系列修炼-Scala课程45
- 大数据系列修炼-Scala课程77
- 大数据系列修炼-Scala课程80
- 大数据系列修炼-Scala课程96(1)
- 大数据系列修炼-Scala课程10
- 大数据系列修炼-Scala课程34
- 大数据系列修炼-Scala课程78
- 大数据系列修炼-Scala课程83
- 大数据系列修炼-Scala课程96(2)
- 大数据系列修炼-Scala课程39
- 大数据系列修炼-Scala课程76