标签:
今晚听了王家林老师的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 的隐式转换机制。
Spark 3000门徒第四课scala模式匹配和类型参数总结
标签:
原文地址:http://www.cnblogs.com/haitianS/p/5100753.html