41 scala的隐式转换基本使用

9 阅读1分钟

一. 什么是隐式转换

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

// 隐式 偷偷的 .....
implicit def double2Int(d:Double):Int = {
  println("double2Int被调用了......")
  d.toInt
}

def main(args: Array[String]): Unit = {
  // 不能把Double类型 保存到 Int。这样会有精度损失,不会自动做转换。
  var i: Int = 1.1
  // 可以把Int类型保存到Double,会自动转换
  var d:Double = 1
}

结果如图:

image.png

二. 隐式函数

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

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

implicit def 函数名(参数:类型1):类型2 = {

函数体

}

注意点:

(1)调用时机,在系统自动把数据从类型1隐式转为类型2时出错时,被自动调用。

(2)函数名可以自定义(一般取名为类型1to类型2),但是参数和返回值必须有限制。