隐式转换 (不知不觉)解决数据类型的转换
1.使用隐式转换的原因
a. var a: Int = 3.5 传统写法会报错
b. var a: Int = 3.5.toInt() 这样写比较繁琐
2.快速入门
a.使用implicit放在一个函数定义的开头
b.声明把需要隐式转化的值的类型作为参数的类型,需要转化成的类型作为返回值
3.底层原理
当编译器发现一个变量声明的类型和赋值的类型不匹配时,如果一个用implicit定义的函数的返回值类型如果和这个变量的赋值类型以及这个函数的参数类型和这个变量声明的类型相匹配的话,即会调用这个函数进行隐式转换
4.注意事项
a.不可以用多个满足条件的implicit修饰的函数
b.idea在调用隐式函数的地方用下划线表示
源码
package edu.lulu.oop.chapter7
object Test00 {
implicit def f1(a:Double):Int={
println("隐式函数被调用")
a.toInt
}
def main(args: Array[String]): Unit = {
var a:Int = 3.5
}
}
运行结果
隐式函数被调用
3Process finished with exit code 0