一个零基础体验scala的隐式转换

深奥的对于新手,就像学数学一样,有个公式,在知道怎么用就是基本的入门了,而不是一下子就让你去深入研究为什么有这个公式,从何而来

进入主题,定义2类Man、SuperMan,创建Man的object,在main函数中为了使用SuperMan中的方法makeMiraclas。

首先得先将Man进行SuerMan的转换,即可使用。

//类1

class Man(val name:String)

object Man{
  implicit def man2SuperMan(man: Man)= new SuperMan(man.name) //隐式转换
}

//类2

class SuperMan(val name:String){
  def makeMiraclas = println(this.name + " Who are you ?")
}

object HelloImplicits {
  def main(args: Array[String]): Unit = {
    val man = new Man("Scala")
    import com.wjgspark.scala.basics.implicits._
    man.makeMiraclas //实现隐式转换的调用,用处不改变原有的类Man,实现自定义类
    implicit val cont ="hoho"
    talk("wjg")
  }
  
  def talk(name: String)(implicit cont:String)=println(name + " : " + cont)

}

//红色字体为拓展在不同包的情况下进行的隐式转换,若无默认隐式值,则可定义默认值,实现不满参数的调用talk("wjg")

object implicits{
  implicit def man2SuperMan(man: Man)= new SuperMan(man.name)
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值