44.Scala中View Bounds代码实战及其在Spark中的应用源码解析

一、View Bounds代码实战


class Pair_NotPerfect[T <% Comparable[T]] (val first : T, val second :T){
  def bigger = if(first.compareTo(second) > 0) first else second
}


object View_Bounds_44 {
    def main(args: Array[String]): Unit = {
      
      val pair = new Pair_NotPerfect("Spark", "Hadoop")
      println(pair.bigger)
      
      val pairInt = new Pair_NotPerfect(3,5)  
      //因为Int会隐式转换成RichInt,而RichInt实现了Comparable[Int],所以用视图界定就没问题
      //因为Int不是Comparable[Int]的子类,若用<:这种,就会报错
     println(pairInt.bigger)
    }  
}
输出:

Spark
5


//如果T能够被界定为Ordered[T]的话,那么就可以使用Ordered[T]的>或者< , 这样更符合数学中比较大小的逻辑
class Pair_Better[T <% Ordered[T]](val first : T, val second : T){
  def bigger = if(first > second) first else second
}

object View_Bounds_44 {
    def main(args: Array[String]): Unit = {
  
      val pair_Better_String = new Pair_Better("scala", "java")
      println(pair_Better_String.bigger)
      
      val pair_Better_Int = new Pair_Better(2,9)
      println(pair_Better_Int.bigger)
       
    }  
}

输出:

scala
9

二、View Bounds在Spark中的广泛应用


   def rddToSequenceFileRDDFunctions[K <% Wirtable : ClassTag, V <% Writable:ClassTag]   ...



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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值