天天看點

Scala 深入淺出實戰經典 第64講:Scala中隐式對象代碼實戰詳解

王家林親授《DT大資料夢工廠》大資料實戰視訊 Scala 深入淺出實戰經典(1-87講)完整視訊、PPT、代碼下載下傳:

百度雲盤:http://pan.baidu.com/s/1c0noOt6

騰訊微雲:http://url.cn/TnGbdC

360雲盤:http://yunpan.cn/cQ4c2UALDjSKy 通路密碼 45e2

洋芋:http://www.tudou.com/programs/view/dHz5JKJxurM/

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

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

騰訊視訊:http://v.qq.com/boke/page/k/0/d/k016008s0rd.html

技術愛好者尤其是大資料愛好者 可以加DT大資料夢工廠的qq群

DT大資料夢工廠① :462923555

DT大資料夢工廠②:437123764

DT大資料夢工廠③ :418110145

微信公衆賬号: DT_Spark

王家林老師微信号: 18610086859

王家林老師QQ: 1740415547

王家林老師郵箱: [email protected]

本視訊由王家林老師, 親自講解, 完全通過代碼實戰把您帶人大資料的時代.

package com.parllay.scala.implicits

/**

* Created by richard on 15-8-22.

* 第64講:Scala中隐式對象代碼實戰詳解

*

* 所謂隐式對象 : 就是用 implicit object 定義的對象,其作用主要表現在 運作時 被調用

*/

abstract class Template[T] {

def add (x : T, y:T): T

}

abstract class SubTemplate[T] extends Template[T] {

def unit : T

object Implicits_Object {

/**

* 定義隐式對象

*/

implicit object StringAdd extends SubTemplate[String] {

def add (x:String, y: String):String = x concat y

def unit: String = ""

}

implicit object IntAdd extends SubTemplate[Int] {

def add (x:Int, y: Int) : Int = x + y

def unit: Int = 0

* 在執行sum的時候,首先推斷出List的類型為Int.

* 然後因為有隐式參數implicit m : SubTemplate[T]

* 會檢查目前作用域是否有SubTemplate[T])類型的 implicit object.

* 如果有并且類型相同,那麼就回去執行該隐式對象裡的方法.

def sum[T] (xs : List[T])(implicit m : SubTemplate[T]) : T =

if (xs.isEmpty) m.unit

else m.add(xs.head, sum(xs.tail))

println(sum(List(1,2,3,4,5)))

println(sum(List("Spark","Scala","Kafka")))

長期招聘java,有找工作可以聯系我,微信:caozhenhua1563