您的位置:首页 > 编程语言

第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析

2015-09-05 23:53 316 查看
今天学业习了上下文界定的内容,看下这段代码

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学习内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: