DT大数据梦工厂 第62讲

王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第62讲:Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析
百度云:http://pan.baidu.com/s/1pJoooun
腾讯微云:http://url.cn/eKIr1t
360云盘:http://yunpan.cn/cckNtsfZfGNQX 访问密码 b3dd
本节王老师讲了上下文界定中的隐式参数。主要有3种方式:
1)class A[T:Ordering](val first:T,val second:T){//Ordering[T]
def bigger(implicit ordered:Ordering[T])= //传递一个隐式参数ordered用来比较类A的成员变量的大小。
if(ordered.compare(first,second)>0) first else second
}
2)class B[T:Ordering](val first:T,val second:T){//Ordering[T]
def bigger=if(implicitly[Ordering[T]].compare(first,second)>0) first else second//调用一个predef中的implicitly方法,这个方法可以传递自动生成一个以Ordering[T]为泛型的隐式参数,这样就可以调用Ordering中的compare方法。
}
3)class C[T:Ordering](val first:T,val second:T){//Ordering[T]
def bigger={
import Ordered._
if(first>second) first else second//因为first和second没有>这个方法,这样编译器就会去寻找泛型Ordering[T],查看有没有隐式转换,找到了Ordered,查看其中存在>方法,就不会报错。于是结果就是最大值。
}
}

你可能感兴趣的:(大数据)