第十六课:Scala implicit编程实战
隐式转换会先看自己的上下文是否有能力转换,如果没有,就会看伴生对象中是否有能力转换
隐式转换的几种使用方式:1.伴生对象中
2.通过import的方式把隐式转换的功能import进来
隐式转换的方式:1.通过方法
2.隐式参数
3.导入
在Spark的RDD中,其实RDD中很多方法其实都不是自身去实现的,但是可以通过隐式转换来使用很多的方法,就像在使用自己的方法一样
例子:
package com.dt.spark.scala.basics
class Man(val name:String)
object Man {
implicit def manToSuperMan(man:Man) = new SuperMan(man.name)
}
class SuperMan(val name:String){
def fight = println("fight")
}
class SuperMan2(val name:String){
def fight2 = println("fight2")
}
object implicits {
implicit def manToSuperMan2(man:Man) = new SuperMan2(man.name)
}
object HelloelloImplicits {
def main(args:Array[String]){
val man = new Man("super")
man.fight
import implicits._
man.fight2
implicit val content:String="money"
talk("Spark")
}
def talk(name:String)(implicit content:String) = println(name+":"+content)
}
归纳总结:1.隐式转换的大致流程
2.隐式转换的几种使用方式
3.隐式转换在RDD中的用处
4.例子
转载于:https://my.oschina.net/u/1449867/blog/728816