第十六课: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.例子

 

第十六课:Scala implicit编程实战

转载于:https://my.oschina.net/u/1449867/blog/728816