Scala 深刻淺出實戰經典 第44講: scala中view bounds代碼實例

王家林親授《DT大數據夢工廠》大數據實戰視頻 Scala 深刻淺出實戰經典(1-64講)完整視頻、PPT、代碼下載:
百度雲盤:http://pan.baidu.com/s/1c0noOt6
騰訊微雲:http://url.cn/TnGbdC
360雲盤:http://yunpan.cn/cQ4c2UALDjSKy 訪問密碼 45e2
技術愛好者尤爲是大數據愛好者 能夠加DT大數據夢工廠的qq羣java

DT大數據夢工廠① :462923555
DT大數據夢工廠②:437123764
DT大數據夢工廠③ :418110145微信

微信公衆帳號: DT_Sparkoop

本視頻由王家林老師, 親自講解, 徹底經過代碼實戰把您帶人大數據的時代.大數據

package com.parllay.scala.type_parameterizitor

/**
* Created by richard on 15-7-28.
*/

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

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


class Pair_Better[T <% Ordered[T]](val first: T, val second: T){
def smaller = if(first < second) first else second
}
object View_Bound {

def main(args: Array[String]) {
/**
* 如下代碼運行沒有任何問題, 由於Pair[String] 是Comparable[T]的子類型, 因此String有compareTo方法
*/
val pair = new Pair_Int("Spark", "Hadoop");
println(pair.bigger)

/**
* 那麼若是是下面這樣的實例化,運行的時候是有問題的, 由於在Scala語言裏 Int類型沒有實現Comparable;
* 那麼該如何解決這個問題那;
* 在scala裏 RichInt實現了Comparable, 若是咱們把int轉換爲RichInt類型就能夠這樣實例化了.
* 在scala裏 <% 就起這個做用, 須要修改Pair裏的 <: 爲<% 把T類型隱身轉換爲Comparable[Int]
*
* 另外解決這個問題的方法是使用Ordered特質, 上一節String實現了Comparable可是沒有實現Ordered, 可是有了view bound就很容易實現;
*
* String能夠被轉換爲RichString. 而RichString是Ordered[String] 的子類.
*/
val pair_int = new Pair_Int(3 ,45)
println(pair_int.bigger)

val pair_better = new Pair_Better(39 ,5)
println(pair_better.smaller)

}

}
相關文章
相關標籤/搜索