您的位置:首页 > 大数据

大数据系列修炼-Scala课程74

2016-10-07 12:26 344 查看
大数据系列修炼-Scala课程74

核心内容:

1、从Spark源码的角度思考Scala中的模式匹配

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会暴露出所有的成员。

实例程序:

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)
}
}


如有问题,欢迎留言指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: