62.Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析

来源:互联网 发布:java utf 8编码 编辑:程序博客网 时间:2024/05/17 07:38
package ce.scala.zhongclass Pair_Implicits[T:Ordering](val first:T, val second : T){  def bigger(implicit ordered:Ordering[T]) = {  //存在一个隐式值ordered    if(ordered.compare(first, second) > 0) first else second  }}class Pair_Implicitly[T:Ordering](val first : T, val second : T){  def bigger = if(implicitly[Ordering[T]].compare(first, second) > 0) first else second   //implicitly提取出运行时上下文界定的实例}class Pair_Implicitly_Ordered[T : Ordering](val first : T, val second : T){  def bigger = {    import Ordered._    if(first > second) first else second  //first和second由Ordering隐式转换成Ordered  }}object Context_Bounds_Internals_62 {  def main(args: Array[String]): Unit = {    println(new Pair_Implicits(7,9).bigger)    println(new Pair_Implicitly(7,9).bigger)    println(new Pair_Implicitly_Ordered(7,9).bigger)  }}

输出:

9
9
9


参考资料来源于大数据梦工厂 深入浅出scala 第62讲 由王家林老师讲解


阅读全文
0 0
原创粉丝点击