package com.spark.scala.basics
/**
* 隐式转换的2种方法
*/
class Man(val name: String)
object Man {
implicit def man2SuperMan(man: Man) = new SuperMan(man.name)
}
class SuperMan(val name: String) {
def makeMirarcles = println(this.name + " Wow, wow, wow...")
}
object ImplicitDemo {
def main(args: Array[String]): Unit = {
val man = new Man("Scala")
man.makeMirarcles //Man调用SuperMan的方法
}
}
package com.spark.scala.basics
/**
* Spark中RDD转DataFrame时的方法
*/
class Man(val name: String)
/*object Man {
implicit def man2SuperMan(man: Man) = new SuperMan(man.name)
}*/
class SuperMan(val name: String) {
def makeMirarcles = println(this.name + " Wow, wow, wow...")
}
object implicits {
implicit def man2SuperMan(man: Man) = new SuperMan(man.name)
}
object ImplicitDemo2 {
def main(args:Array[String]): Unit ={
import com.spark.scala.basics.implicits._ //导入implicit
val man = new Man("Scala")
man.makeMirarcles
}
}
package com.spark.scala.basics
/**
* 隐式参数的使用
*/
object ImplicitDemo3 {
def main(args: Array[String]): Unit = {
implicit val content = "Dollar"
talk("scala")("Money")
talk("scala")
}
def talk(name: String)(implicit content: String) = println(name + " : " + content)
}