Scala 深刻淺出實戰經典 第62講:Scala中上下文界定內幕中的隱式參數實戰詳解

王家林親授《DT大數據夢工廠》大數據實戰視頻 Scala 深刻淺出實戰經典(1-87講)完整視頻、PPT、代碼下載:html

百度雲盤:http://pan.baidu.com/s/1c0noOt6
騰訊微雲:http://url.cn/TnGbdC
360雲盤:http://yunpan.cn/cQ4c2UALDjSKy 訪問密碼 45e2微信

土豆:http://www.tudou.com/programs/view/A5a7v7W-BfE/大數據

優酷:http://v.youku.com/v_show/id_XMTI4OTY0NDc2OA==.html?from=s1.8-1-1.2url

愛奇藝:http://www.iqiyi.com/w_19rru5bi79.html#vfrm=2-3-0-1
spa

騰訊視頻:http://v.qq.com/boke/page/v/0/m/v0160rz9hkm.htmlscala


技術愛好者尤爲是大數據愛好者 能夠加DT大數據夢工廠的qq羣視頻

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

微信公衆帳號: DT_Spark
王家林老師微信號: 18610086859
王家林老師QQ: 1740415547
王家林老師郵箱: 18610086859@126.comci

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

package com.parllay.scala.implicits

/**
* Created by richard on 15-8-21.
* 第62講:Scala中上下文界定內幕中的隱式參數實戰詳解
*/

/**
* 類型參數能夠有一個形式爲;T:M 的上下文界定, 其中M爲另一個泛型類型;
* 它要求做用域中存在一個類型爲M[T]的隱式值.
*
* 下面類要求存在類型爲Ordering[T]的隱式值.
* new Pair_Implicits(7, 9) 這個實例, 編譯器將推斷出咱們須要一個Pair_Implicits[Int].
* 因爲predef做用域中有一個類型爲Ordering[Int]的隱式值. 所以Int知足上下文界定.
* 這個Ordering[Int] 就成爲該類的一個字段, 被傳入須要該值的方法當中.
*/
class Pair_Implicits[T: Ordering](val first:T, val second: T){
def bigger(implicit ordered: Ordering[T]) =
if(ordered.compare(first,second) > 0) first else second
}

/**
* 咱們還能夠使用Implicitly方法獲取該值.implicitly[Ordering[T] 是一個方法,
* implicitly[T](implicit e: T) = e
*
*隱式值以一種不可見的方式被加入到方法當中.
*/
class Pair_Implicitly[T: Ordering](val first:T, val second: T){
def bigger = if(implicitly[Ordering[T]].compare(first, second) > 0) first else second
}

/**
* 能夠利用Ordered特質, 它實現了Ordered到Ordering的隱式轉換. 所以能夠直接比較.
*/
class Pair_Implicitly_Ordered[T:Ordering](val first:T, val second:T){
def bigger = {
import Ordered._
if(first > second) first else second
}
}

object Context_Bounds_Internals {

def main(args: Array[String]) {
println(new Pair_Implicits(7, 9).bigger)
println(new Pair_Implicitly(7,9).bigger)
println(new Pair_Implicitly_Ordered(7, 9).bigger)
}

}

相關文章
相關標籤/搜索