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 的隐式转换机制。

 

posted on 2016-01-05 00:25  HaiziS  阅读(298)  评论(0编辑  收藏  举报