您的位置:首页 > 编程语言

Scala深入浅出进阶经典 第64讲:Scala中隐式对象代码实战详解

2015-09-25 23:37 483 查看
package com.dt.scalaInAction.demo_064

/**
* Scala中隐式对象代码实战详解
*/
abstract class Template[A] {
def add(x: A, y: A): A
}
abstract class SubTemplate[A] extends Template[A] {
def unit: A
}
object Implicits_Object {
def main(args: Array[String]): Unit = {
implicit object StringAdd extends  SubTemplate[String] {
def add(x: String, y: String): String = x concat y
def unit: String = ""
}

//定义隐式对象  定义方式:implicit object XXX
implicit object IntAdd extends SubTemplate[Int] {
def add(x: Int, y: Int): Int = x + y
def unit: Int = 0
}

//implicit m: SubTemplate[T]中 m是一个隐式对象
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)))         //6
println(sum(List("Scala", "Spark", "Kafka")))   //ScalaSparkKafka

}
}
以上内容是从王家林老师DT大数据课程第6讲的学习笔记和个人整理。

DT大数据微信公众账号:DT_Spark

王家林老师QQ:1740415547

王家林老师微信号:18610086859

第6讲视频网站地址:http://pan.baidu.com/s/1dD97ukp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: