scala中隐式转换之隐式值和隐式视图

/**
  * Created by root
  * Description : 隐式值和隐式视图
  */
object ImplicitTest {

  def main(args: Array[String]): Unit = {

    // 隐式值
    implicit val str = "hello"
    def fun(implicit s: String) = println(s)
    fun  // 调用fun函数,编译器发现参数缺省,直接去作用域内查找隐式值,保证隐式值只有一个

    // 隐式视图:隐式转换为目标类型:把一种类型自动转换到另一种类型
    implicit def intToString(a : Int) = a.toString
    implicit def intToByte(a : Int) = a.toByte
    def fun2(s: String) = println(s)
    fun2(100) //调用fun2函数,参数是个整数,编译器发现函数参数类型不一致,直接去作用域内查找符合编译通过的类型

  }

}

 

posted @ 2017-12-07 18:02  麻雀虽小五脏俱全  阅读(377)  评论(0编辑  收藏  举报