Scala 学习笔记之implicit

Posted AK47Sonic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala 学习笔记之implicit相关的知识,希望对你有一定的参考价值。

implicit 分为隐式转换和隐式参数,下面例子展现了两种方式的用法:

package com.citi.scala

class Man(val name: String) {
  def talkWith(m: SuperMan) {
    println(s"Talk with ${m.name}")
  }

  def SayHello(msg: String)(implicit prefix: String) {
    println(prefix + ", " + msg)
  }

}
object Man {
  //  implicit def manToSuperMan(s: Man): SuperMan = {
  //    new SuperMan(s.name)
  //  }  
}

class SuperMan(val name: String) {
  def flyInSky {
    println("I can fly in the sky")
  }

}
object SuperMan {

}

object ImplicitLearning {
  implicit def manToSuperMan(s: Man): SuperMan = {
    new SuperMan(s.name)
  }

  implicit val prefix: String = "Hello"

  def main(args: Array[String]): Unit = {
    val m = new Man("Sky")
    //对象隐式转换
    m.flyInSky
    //方法参数隐式转换
    m.talkWith(m)

    m.SayHello("World")("See")
    //隐式参数
    m.SayHello("World")
  }
}

运行结果:

I can fly in the sky
Talk with Sky
Input, World
Hello, World

 

  

以上是关于Scala 学习笔记之implicit的主要内容,如果未能解决你的问题,请参考以下文章

Scala 学习笔记之隐式参数和隐式转换并用

Scala Implicit 详解

scala 学习总结: implicit 函数的使用

scala中的implicit

Scala学习笔记及与Java不同之处总结-从Java开发者角度

scala 隐式详解(implicit关键字)