标签:
今天学业习了上下文界定的内容,看下这段代码
class Pair_Ordering[T:Ordering](val first : T,val second : T){
def bigger(implicit ordered:Ordering[T]) = {
if(ordered.compare(first, second) > 0) first else second
}
}
object Context_Bounds {
def main(args:Array[String]){
val pair = new Pair_Ordering("Spark","Hadoop")
println(pair.bigger)
val pairInt = new Pair_Ordering(3,5)
println(pairInt.bigger)
}
}
在Pair_Ordering类的定义中,我们类的类型为T,T的类型为Ordering,就是说,存在一个泛型类,它的类型是Ordering。类中的bigger方法中存在一个隐式转换,当我们调用这个方法时,会传放一个对像,这个对像ordered,它的类型是Ordering[T],通过这种方法,我们就可以调用ordered对像的compare方法来比较类的传入参数。
这种方法叫做上下文界定,在spark代码中非常常见。
分享下更多的scala资源吧:
百度云盘:http://pan.baidu.com/s/1gd7133t
微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416
360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于scala学习内容
第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析
标签:
原文地址:http://www.cnblogs.com/qingyuesama/p/4784245.html