今天读Scala代码,遇到了implict关键字,参考博客对其分析,并自己实际动手编码,主要了解了scala中的隐式函数的用法:
def main(args: Array[String]): Unit = {
implicit def double2Int(x:Double):Int=x.toInt;
val x:Int = 3.5
print(x)
}
//输出:3
要点如下:
- 隐式函数之前采用implict修饰
- 隐式函数命名无要求,例如上面代码的隐式函数名可以任意取用
- 隐式函数不用显式调用,编译器会在需要时自己调用,如上面代码中,在第三行需要这种double转化为int时,编译器自动调用double2Int函数实现转化。
注:在Scala中不支持这种double转化为int,编译器会报错,但int可以直接赋值给double变量,编译器会自动实现隐式转化。
import scala.language.implicitConversions
implicit def int2long(x: Int): Long = x.toLong
implicit def int2float(x: Int): Float = x.toFloat
implicit def int2double(x: Int): Double = x.toDouble
//Scala的Int类部分源码