Scala基础—implicit编程示例

来源:互联网 发布:淘宝九块九秒杀 编辑:程序博客网 时间:2024/05/20 00:10

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/**  * SparkRDDDataFrame时的方法  */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)}