第44讲的:Scala中视图边界代码实战及其在火花中的应用源码解析

  

我们先看一下变量界定的代码

package  com.dt.scala.type_parameterization      class  Pair_NoPerfect [T  & lt;:,可比[T]](第一:,T,第二:T) {,   def  bigger ={才能   ,,,if  (first.compareTo(二)在=0),first  else  second    ,,}   }      object  View_Bounds  {   ,,,def 主要(args:数组[String]):, Unit =, {   ,,,val  pair =, new  Pair_NoPerfect(“火花”,“Hadoop”)   ,,,println (pair.bigger)   ,,,}   }

如果我们要传入的参数是整数,编译器会报错

第44讲的:Scala中视图边界代码实战及其在火花中的应用源码解析

说明Int不是可比的子类。但是Int可以通过隐式转换转成RichInt,它是类似子类。

那么我们可以使用视图界定(查看绑定)来实现

package  com.dt.scala.type_parameterization      class  Pair_NoPerfect [T  & lt;:,可比[T]](第一:,T,第二:T) {,   def  bigger ={才能   ,,,if  (first.compareTo(二)在=0),first  else  second    ,,}   }//,将变量界定符号中的:换成%,,那么就变成了视图界定,,& lt; %,   class  Pair_Better [T  & lt; %,可比[T]](第一:,T,第二:T) {,   def  bigger ={才能   ,,,if  (first.compareTo(二)在=0),first  else  second    ,,}   }   object  View_Bounds  {   ,,,def 主要(args:数组[String]):, Unit =, {   ,,,,,,val  pair =, new  Pair_Better(1、2),//,隐式转换,Int →, RichInt    ,,,,,,println (pair.bigger)   ,,,}   }


第44讲的:Scala中视图边界代码实战及其在火花中的应用源码解析