频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
大数据系列修炼:Scala课程74
2016-10-08 09:06:38         来源:数据分析玩家  
收藏   我要投稿

核心内容:

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


实例程序:

abstract class Person
case class Student(name:String,score:Double) extends Person
case class Worker(name:String,salary:Double) extends Person
case object Shared extends Person

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

      def fun(person:Person) = person match
      {
        //我有一个疑问,如果用new Student写应该怎么写
        case Student(name,score) =>  println("name is:"+name+"score is:"+score) 
        case Worker(name,salary) =>  println("name is:"+name+"salary is:" + salary)
        case Shared => println("Hello Spark!")
        case _ => println("Nothing")
      }

      //case class的伴生对象的apply方法用于构建实例对象
      //消息的提取则是由unapply这个方法来完成的
      fun(Student("Spark", 100.0))
      fun(Shared)
   }
}

如有问题,欢迎留言指正!

点击复制链接 与好友分享!回本站首页
上一篇:大型网站架构演化历程
下一篇:大数据系列修炼:Scala课程75
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站