隐式转换1

27 阅读1分钟

什么是隐式转换

隐式转换是指:scala自动把一种类型转成另一种类型的过程。这个过程对用户编程而言不可见,不需要用户手动编写代码

在scala.Predef中,可以看到有系统提供了默认的情况。

隐式函数的定义:通过implicit关键字修饰的函数,它的功能是把一种类型的数据转成另一种类型。

object imp01 {
  implicit def double2Int(d:Double):Int = {
    println("调用 double2int")
    d.toInt
  }

  def main(args: Array[String]): Unit = {
    var i:Int = 1;
    val d:Double = i //把int --> double 。隐式转换。把精度低的数据转成精度高的,这是可以的!!!
    i = 1.2 //把double ---> int 。把高精度的转成低精度的,错误!!!!
    i = 2.2
    i = 3.3
    println(i)
  }
}
object imp02 {
  implicit val defaultPassword:String = "88888888"
  def reg( name:String)(implicit password:String="123456"):Unit = {
    println(s"用户名:$name, 密码: ${password}")
  }
  def main(args: Array[String]): Unit = {
    reg("小花")
    reg("小明")("admin")
  }
}