zoukankan      html  css  js  c++  java
  • Spark 3000门徒第四课scala模式匹配和类型参数总结

    今晚听了王家林老师的Spark 3000门徒系列第四课scala模式匹配和类型参数,总结如下:

    模式匹配:
    def data(array:Array[String]){
    array match{
    case Array(a,b,c) => println(a+b+c)
    case Array("spark",_*) => //匹配以spark为第一元素的数组
    case _ => ...
    }
    }

    课后作业是:

    阅读Spark源码 RDD、HadoopRDD、SparkContext、Master、Worker的源码,并分析里面使用的所有的模式匹配和类型参数的内容。

    下面是我的一点总结:

    T <% Writable: ClassTag
    T可以隐身转换为Writable类型
    ClassTag在上下文中注入隐式值

    对于Manifest Context Bounds
    [T : Manifest] 进化为ClassTag了,T:ClassTag  运行时传递完整的类型上下文信息

    Seq[Dependency[_]] 相当于Seq[Dependency[T]] 

    另外有段重要注释:

    {{{
    * scala> def mkArray[T : ClassTag](elems: T*) = Array[T](elems: _*)
    * mkArray: [T](elems: T*)(implicit evidence$1: scala.reflect.ClassTag[T])Array[T]
    *
    * scala> mkArray(42, 13)
    * res0: Array[Int] = Array(42, 13)
    *
    * scala> mkArray("Japan","Brazil","Germany")
    * res1: Array[String] = Array(Japan, Brazil, Germany)
    * }}}
    *

    表明了ClassTag 的隐式转换机制。

  • 相关阅读:
    [栈]
    [数据结构实验]学生成绩管理
    [数据结构实验]集合交并
    shapefile 转 geojson 文件类型
    ubuntu sublime text key
    opengl
    c++
    sublime text3 key
    ubuntu安装nvidia驱动
    全球国家svg边界svg
  • 原文地址:https://www.cnblogs.com/haitianS/p/5100753.html
Copyright © 2011-2022 走看看